| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403 |
- // This is a part of the Microsoft Foundation Classes C++ library.
- // Copyright (C) 1992-1998 Microsoft Corporation
- // All rights reserved.
- //
- // This source code is only intended as a supplement to the
- // Microsoft Foundation Classes Reference and related
- // electronic documentation provided with the library.
- // See these sources for detailed information regarding the
- // Microsoft Foundation Classes product.
- #ifndef __AFXRICH_H__
- #define __AFXRICH_H__
- #ifdef _AFX_NO_RICHEDIT_SUPPORT
- #error Windows RichEdit classes not supported in this library variant.
- #endif
- #ifndef __AFXWIN_H__
- #include <afxwin.h>
- #endif
- #ifndef __AFXDLGS_H__
- #include <afxdlgs.h>
- #endif
- #ifndef __AFXOLE_H__
- #include <afxole.h>
- #endif
- #ifndef _RICHEDIT_
- #include <richedit.h>
- #endif
- #ifndef _RICHOLE_
- #include <richole.h>
- #define _RICHOLE_
- #endif
- #ifndef __AFXCMN_H__
- #include <afxcmn.h>
- #endif
- #ifdef _AFX_MINREBUILD
- #pragma component(minrebuild, off)
- #endif
- #ifndef _AFX_FULLTYPEINFO
- #pragma component(mintypeinfo, on)
- #endif
- #ifdef _AFX_PACKING
- #pragma pack(push, _AFX_PACKING)
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // AFXRICH - MFC RichEdit classes
- // Classes declared in this file
- //CObject
- //CCmdTarget;
- //CWnd
- //CView
- //CCtrlView
- class CRichEditView;// rich text editor view
- //CDocument
- //COleDocument
- class CRichEditDoc;
- //CDocItem
- //COleClientItem
- class CRichEditCntrItem;
- #undef AFX_DATA
- #define AFX_DATA AFX_OLE_DATA
- /////////////////////////////////////////////////////////////////////////////
- // CRichEditView
- class _AFX_RICHEDIT_STATE; // private to implementation
- class CRichEditView : public CCtrlView
- {
- DECLARE_DYNCREATE(CRichEditView)
- // Construction
- public:
- CRichEditView();
- // Attributes
- public:
- enum WordWrapType
- {
- WrapNone = 0,
- WrapToWindow = 1,
- WrapToTargetDevice = 2
- };
- int m_nWordWrap;
- int m_nBulletIndent;
- void SetPaperSize(CSize sizePaper);
- CSize GetPaperSize() const;
- void SetMargins(const CRect& rectMargin);
- CRect GetMargins() const;
- int GetPrintWidth() const;
- CRect GetPrintRect() const;
- CRect GetPageRect() const;
- //formatting
- CHARFORMAT& GetCharFormatSelection();
- PARAFORMAT& GetParaFormatSelection();
- void SetCharFormat(CHARFORMAT cf);
- BOOL SetParaFormat(PARAFORMAT& pf);
- CRichEditCntrItem* GetSelectedItem() const;
- CRichEditCntrItem* GetInPlaceActiveItem() const;
- // CEdit control access
- CRichEditCtrl& GetRichEditCtrl() const;
- CRichEditDoc* GetDocument() const;
- // other attributes
- long GetTextLength() const;
- static BOOL AFX_CDECL IsRichEditFormat(CLIPFORMAT cf);
- BOOL CanPaste() const;
- // Operations
- public:
- void AdjustDialogPosition(CDialog* pDlg);
- HRESULT InsertItem(CRichEditCntrItem* pItem);
- void InsertFileAsObject(LPCTSTR lpszFileName);
- BOOL FindText(LPCTSTR lpszFind, BOOL bCase = TRUE, BOOL bWord = TRUE);
- BOOL FindTextSimple(LPCTSTR lpszFind, BOOL bCase = TRUE,
- BOOL bWord = TRUE);
- long PrintInsideRect(CDC* pDC, RECT& rectLayout, long nIndexStart,
- long nIndexStop, BOOL bOutput);
- long PrintPage(CDC* pDC, long nIndexStart, long nIndexStop);
- void DoPaste(COleDataObject& dataobj, CLIPFORMAT cf,
- HMETAFILEPICT hMetaPict);
- // Helpers
- void OnCharEffect(DWORD dwMask, DWORD dwEffect);
- void OnUpdateCharEffect(CCmdUI* pCmdUI, DWORD dwMask, DWORD dwEffect) ;
- void OnParaAlign(WORD wAlign);
- void OnUpdateParaAlign(CCmdUI* pCmdUI, WORD wAlign);
- // Overrideables
- protected:
- virtual BOOL IsSelected(const CObject* pDocItem) const;
- virtual void OnInitialUpdate();
- virtual void OnFindNext(LPCTSTR lpszFind, BOOL bNext, BOOL bCase, BOOL bWord);
- virtual void OnReplaceSel(LPCTSTR lpszFind, BOOL bNext, BOOL bCase,
- BOOL bWord, LPCTSTR lpszReplace);
- virtual void OnReplaceAll(LPCTSTR lpszFind, LPCTSTR lpszReplace,
- BOOL bCase, BOOL bWord);
- virtual void OnTextNotFound(LPCTSTR lpszFind);
- virtual void OnPrinterChanged(const CDC& dcPrinter);
- virtual void WrapChanged();
- // Advanced
- virtual BOOL OnPasteNativeObject(LPSTORAGE lpStg);
- virtual HMENU GetContextMenu(WORD, LPOLEOBJECT, CHARRANGE* );
- virtual HRESULT GetClipboardData(CHARRANGE* lpchrg, DWORD dwReco,
- LPDATAOBJECT lpRichDataObj, LPDATAOBJECT* lplpdataobj);
- virtual HRESULT QueryAcceptData(LPDATAOBJECT, CLIPFORMAT*, DWORD,
- BOOL, HGLOBAL);
- // Implementation
- public:
- LPRICHEDITOLE m_lpRichEditOle;
- CDC m_dcTarget;
- long m_lInitialSearchPos;
- UINT m_nPasteType;
- BOOL m_bFirstSearch;
- void TextNotFound(LPCTSTR lpszFind);
- BOOL FindText(_AFX_RICHEDIT_STATE* pEditState);
- BOOL FindTextSimple(_AFX_RICHEDIT_STATE* pEditState);
- long FindAndSelect(DWORD dwFlags, FINDTEXTEX& ft);
- void Stream(CArchive& ar, BOOL bSelection);
- HRESULT GetWindowContext(LPOLEINPLACEFRAME* lplpFrame,
- LPOLEINPLACEUIWINDOW* lplpDoc, LPOLEINPLACEFRAMEINFO lpFrameInfo);
- HRESULT ShowContainerUI(BOOL b);
- static DWORD CALLBACK EditStreamCallBack(DWORD dwCookie,
- LPBYTE pbBuff, LONG cb, LONG *pcb);
- #ifdef _DEBUG
- virtual void AssertValid() const;
- virtual void Dump(CDumpContext& dc) const;
- #endif
- virtual void Serialize(CArchive& ar);
- virtual void DeleteContents();
- virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo);
- static AFX_DATA ULONG lMaxSize; // maximum number of characters supported
- protected:
- CRect m_rectMargin;
- CSize m_sizePaper;
- CDWordArray m_aPageStart; // array of starting pages
- PARAFORMAT m_paraformat;
- CHARFORMAT m_charformat;
- BOOL m_bSyncCharFormat;
- BOOL m_bSyncParaFormat;
- // construction
- virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
- // printing support
- virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
- virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
- virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo = NULL);
- BOOL PaginateTo(CDC* pDC, CPrintInfo* pInfo);
- // find & replace support
- void OnEditFindReplace(BOOL bFindOnly);
- BOOL SameAsSelected(LPCTSTR lpszCompare, BOOL bCase, BOOL bWord);
- // special overrides for implementation
- //{{AFX_MSG(CRichEditView)
- afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
- afx_msg void OnUpdateNeedSel(CCmdUI* pCmdUI);
- afx_msg void OnUpdateNeedClip(CCmdUI* pCmdUI);
- afx_msg void OnUpdateNeedText(CCmdUI* pCmdUI);
- afx_msg void OnUpdateNeedFind(CCmdUI* pCmdUI);
- afx_msg void OnUpdateEditUndo(CCmdUI* pCmdUI);
- afx_msg void OnEditCut();
- afx_msg void OnEditCopy();
- afx_msg void OnEditPaste();
- afx_msg void OnEditClear();
- afx_msg void OnEditUndo();
- afx_msg void OnEditSelectAll();
- afx_msg void OnEditFind();
- afx_msg void OnEditReplace();
- afx_msg void OnEditRepeat();
- afx_msg void OnDestroy();
- afx_msg void OnEditProperties();
- afx_msg void OnUpdateEditProperties(CCmdUI* pCmdUI);
- afx_msg void OnInsertObject();
- afx_msg void OnCancelEditCntr();
- afx_msg void OnCharBold();
- afx_msg void OnUpdateCharBold(CCmdUI* pCmdUI);
- afx_msg void OnCharItalic();
- afx_msg void OnUpdateCharItalic(CCmdUI* pCmdUI);
- afx_msg void OnCharUnderline();
- afx_msg void OnUpdateCharUnderline(CCmdUI* pCmdUI);
- afx_msg void OnParaCenter();
- afx_msg void OnUpdateParaCenter(CCmdUI* pCmdUI);
- afx_msg void OnParaLeft();
- afx_msg void OnUpdateParaLeft(CCmdUI* pCmdUI);
- afx_msg void OnParaRight();
- afx_msg void OnUpdateParaRight(CCmdUI* pCmdUI);
- afx_msg void OnBullet();
- afx_msg void OnUpdateBullet(CCmdUI* pCmdUI);
- afx_msg void OnFormatFont();
- afx_msg void OnColorPick(COLORREF cr);
- afx_msg void OnColorDefault();
- afx_msg void OnEditPasteSpecial();
- afx_msg void OnUpdateEditPasteSpecial(CCmdUI* pCmdUI);
- afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
- afx_msg void OnDropFiles(HDROP hDropInfo);
- afx_msg void OnDevModeChange(LPTSTR lpDeviceName);
- //}}AFX_MSG
- afx_msg LRESULT OnFindReplaceCmd(WPARAM, LPARAM lParam);
- afx_msg void OnSelChange(NMHDR* pNMHDR, LRESULT* pResult);
- DECLARE_MESSAGE_MAP()
- // Interface Map
- public:
- BEGIN_INTERFACE_PART(RichEditOleCallback, IRichEditOleCallback)
- INIT_INTERFACE_PART(CRichEditView, RichEditOleCallback)
- STDMETHOD(GetNewStorage) (LPSTORAGE*);
- STDMETHOD(GetInPlaceContext) (LPOLEINPLACEFRAME*,
- LPOLEINPLACEUIWINDOW*,
- LPOLEINPLACEFRAMEINFO);
- STDMETHOD(ShowContainerUI) (BOOL);
- STDMETHOD(QueryInsertObject) (LPCLSID, LPSTORAGE, LONG);
- STDMETHOD(DeleteObject) (LPOLEOBJECT);
- STDMETHOD(QueryAcceptData) (LPDATAOBJECT, CLIPFORMAT*, DWORD,BOOL, HGLOBAL);
- STDMETHOD(ContextSensitiveHelp) (BOOL);
- STDMETHOD(GetClipboardData) (CHARRANGE*, DWORD, LPDATAOBJECT*);
- STDMETHOD(GetDragDropEffect) (BOOL, DWORD, LPDWORD);
- STDMETHOD(GetContextMenu) (WORD, LPOLEOBJECT, CHARRANGE*, HMENU*);
- END_INTERFACE_PART(RichEditOleCallback)
- DECLARE_INTERFACE_MAP()
- };
- /////////////////////////////////////////////////////////////////////////////
- // CRichEditDoc
- #ifdef _AFXDLL
- class CRichEditDoc : public COleServerDoc
- #else
- class AFX_NOVTABLE CRichEditDoc : public COleServerDoc
- #endif
- {
- protected: // create from serialization only
- CRichEditDoc();
- DECLARE_DYNAMIC(CRichEditDoc)
- // Attributes
- public:
- BOOL m_bRTF; // TRUE when formatted, FALSE when plain text
- virtual CRichEditCntrItem* CreateClientItem(REOBJECT* preo = NULL) const = 0;
- virtual CRichEditView* GetView() const;
- int GetStreamFormat() const;
- // Implementation
- protected:
- virtual COleServerItem* OnGetEmbeddedItem();
- void MarkItemsClear() const;
- void DeleteUnmarkedItems() const;
- void UpdateObjectCache();
- public:
- BOOL m_bUpdateObjectCache;
- virtual void SetPathName(LPCTSTR lpszPathName, BOOL bAddToMRU);
- virtual void SetTitle(LPCTSTR lpszTitle);
- virtual COleClientItem* GetPrimarySelectedItem(CView* pView);
- virtual void DeleteContents();
- virtual POSITION GetStartPosition() const;
- virtual void PreCloseFrame(CFrameWnd* pFrameWnd);
- virtual void UpdateModifiedFlag();
- virtual BOOL IsModified();
- virtual void SetModifiedFlag(BOOL bModified = TRUE);
- virtual COleClientItem* GetInPlaceActiveItem(CWnd* pWnd);
- CRichEditCntrItem* LookupItem(LPOLEOBJECT lpobj) const;
- void InvalidateObjectCache();
- virtual void Serialize(CArchive& ar); // overridden for document i/o
- #ifdef _DEBUG
- virtual void AssertValid() const;
- virtual void Dump(CDumpContext& dc) const;
- #endif
- };
- /////////////////////////////////////////////////////////////////////////////
- // CRichEditCntrItem
- class CRichEditCntrItem : public COleClientItem
- {
- DECLARE_SERIAL(CRichEditCntrItem)
- // Constructors
- public:
- CRichEditCntrItem(REOBJECT* preo = NULL, CRichEditDoc* pContainer = NULL);
- // Note: pContainer is allowed to be NULL to enable IMPLEMENT_SERIAL.
- // IMPLEMENT_SERIAL requires the class have a constructor with
- // zero arguments. Normally, OLE items are constructed with a
- // non-NULL document pointer.
- // Operations
- void SyncToRichEditObject(REOBJECT& reo);
- // Implementation
- public:
- ~CRichEditCntrItem();
- LPOLECLIENTSITE m_lpClientSite;
- BOOL m_bMark;
- BOOL m_bLock; // lock it during creation to avoid deletion
- void Mark(BOOL b);
- BOOL IsMarked();
- CRichEditDoc* GetDocument();
- CRichEditView* GetActiveView();
- HRESULT ShowContainerUI(BOOL b);
- HRESULT GetWindowContext(LPOLEINPLACEFRAME* lplpFrame,
- LPOLEINPLACEUIWINDOW* lplpDoc, LPOLEINPLACEFRAMEINFO lpFrameInfo);
- virtual LPOLECLIENTSITE GetClientSite();
- virtual BOOL ConvertTo(REFCLSID clsidNew);
- virtual BOOL ActivateAs(LPCTSTR lpszUserType, REFCLSID clsidOld,
- REFCLSID clsidNew);
- virtual void SetDrawAspect(DVASPECT nDrawAspect);
- virtual void OnDeactivateUI(BOOL bUndoable);
- virtual BOOL CanActivate();
- #ifdef _DEBUG
- virtual void AssertValid() const;
- virtual void Dump(CDumpContext& dc) const;
- #endif
- protected:
- virtual BOOL OnChangeItemPosition(const CRect& rectPos);
- };
- /////////////////////////////////////////////////////////////////////////////
- // Inline function declarations
- #ifdef _AFX_PACKING
- #pragma pack(pop)
- #endif
- #ifdef _AFX_ENABLE_INLINES
- #define _AFXRICH_INLINE AFX_INLINE
- #include <afxrich.inl>
- #endif
- #undef AFX_DATA
- #define AFX_DATA
- #ifdef _AFX_MINREBUILD
- #pragma component(minrebuild, on)
- #endif
- #ifndef _AFX_FULLTYPEINFO
- #pragma component(mintypeinfo, off)
- #endif
- #endif //__AFXRICH_H__
- /////////////////////////////////////////////////////////////////////////////
|