📄 afxole.h
字号:
friend class COleClientItem;
friend class COleClientItem::XOleClientSite;
friend class COleServerItem::XOleObject;
};
//////////////////////////////////////////////////////////////////////////////
// COleServerDoc - registered server document containing COleServerItems
#ifdef _AFXDLL
class COleServerDoc : public COleLinkingDoc
#else
class AFX_NOVTABLE COleServerDoc : public COleLinkingDoc
#endif
{
DECLARE_DYNAMIC(COleServerDoc)
// Constructors and Destructors
public:
COleServerDoc();
// Attributes
BOOL IsEmbedded() const; // TRUE if document is an embedding
BOOL IsDocObject() const; // TRUE if document is a DocObject
COleServerItem* GetEmbeddedItem();
// return embedded item for document (will allocate if necessary)
// attributes specific to in-place activation
BOOL IsInPlaceActive() const;
void GetItemPosition(LPRECT lpPosRect) const;
// get current position rectangle of in-place edit
void GetItemClipRect(LPRECT lpClipRect) const;
// get current clipping rectangle of in-place edit
BOOL GetZoomFactor(LPSIZE lpSizeNum = NULL, LPSIZE lpSizeDenom = NULL,
LPCRECT lpPosRect = NULL) const;
// returns the zoom factor in pixels
// Operations
void NotifyChanged();
// call this after you change some global attribute like
// document dimensions
void UpdateAllItems(COleServerItem* pSender,
LPARAM lHint = 0L, CObject* pHint = NULL,
DVASPECT nDrawAspect = DVASPECT_CONTENT);
// changes to the entire document (automatically notifies clients)
void NotifyRename(LPCTSTR lpszNewName);
void NotifySaved();
void NotifyClosed(); // call this after you close document
// specific operations for embedded documents
void SaveEmbedding(); // call this to save embedded (before closing)
// specific to in-place activation
BOOL ActivateInPlace();
void ActivateDocObject();
void RequestPositionChange(LPCRECT lpPosRect);
BOOL ScrollContainerBy(CSize sizeScroll);
BOOL DeactivateAndUndo();
BOOL DiscardUndoState();
public:
// Overridables for standard user interface (full server)
virtual BOOL OnUpdateDocument(); // implementation of embedded update
protected:
// Overridables you must implement for yourself
virtual COleServerItem* OnGetEmbeddedItem() = 0;
// return item representing entire (embedded) document
// Overridables you do not have to implement
virtual void OnClose(OLECLOSE dwCloseOption);
virtual void OnSetHostNames(LPCTSTR lpszHost, LPCTSTR lpszHostObj);
virtual HRESULT OnExecOleCmd(const GUID* pguidCmdGroup, DWORD nCmdID,
DWORD nCmdExecOpt, VARIANTARG* pvarargIn, VARIANTARG* pvarargOut);
virtual CDocObjectServer* GetDocObjectServer(LPOLEDOCUMENTSITE pDocSite);
// Advanced overridables
LPUNKNOWN GetInterfaceHook(const void* piid);
virtual void OnShowDocument(BOOL bShow);
// show first frame for document or hide all frames for document
// Advanced overridables for in-place activation
public:
virtual void OnDeactivate();
virtual void OnDeactivateUI(BOOL bUndoable);
protected:
virtual void OnSetItemRects(LPCRECT lpPosRect, LPCRECT lpClipRect);
virtual BOOL OnReactivateAndUndo();
virtual void OnFrameWindowActivate(BOOL bActivate);
virtual void OnDocWindowActivate(BOOL bActivate);
virtual void OnShowControlBars(CFrameWnd* pFrameWnd, BOOL bShow);
virtual COleIPFrameWnd* CreateInPlaceFrame(CWnd* pParentWnd);
virtual void DestroyInPlaceFrame(COleIPFrameWnd* pFrameWnd);
public:
virtual void OnResizeBorder(LPCRECT lpRectBorder,
LPOLEINPLACEUIWINDOW lpUIWindow, BOOL bFrame);
// Implementation
protected:
LPOLECLIENTSITE m_lpClientSite; // for embedded item
CString m_strHostObj; // name of document in container
BOOL m_bCntrVisible; // TRUE if OnShowWindow(TRUE) called
BOOL m_bClosing; // TRUE if shutting down
COleServerItem* m_pEmbeddedItem; // pointer to embedded item for document
COleIPFrameWnd* m_pInPlaceFrame; // not NULL if in-place activated
CWnd* m_pOrigParent; // not NULL if existing view used
DWORD m_dwOrigStyle; // original style of in-place view
DWORD m_dwOrigStyleEx; // original extended style
CDocObjectServer* m_pDocObjectServer; // if DocObject, ptr to doc site
public:
virtual ~COleServerDoc();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
// overridables for implementation
virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
virtual void OnCloseDocument();
virtual void DeleteContents(); // delete auto-delete server items
virtual LPMONIKER GetMoniker(OLEGETMONIKER nAssign);
virtual COleServerItem* OnGetLinkedItem(LPCTSTR lpszItemName);
// return item for the named linked item (only if supporting links)
virtual BOOL CanCloseFrame(CFrameWnd* pFrame);
protected:
// overrides to handle server user-interface
virtual BOOL SaveModified(); // return TRUE if ok to continue
virtual HMENU GetDefaultMenu(); // return menu based on doc type
virtual HACCEL GetDefaultAccelerator(); // return accel table based on doc type
virtual BOOL GetFileTypeString(CString& rString);
// IPersistStorage implementation
virtual void OnNewEmbedding(LPSTORAGE lpStorage);
virtual void OnOpenEmbedding(LPSTORAGE lpStorage);
virtual void OnSaveEmbedding(LPSTORAGE lpStorage);
// Implementation helpers
void NotifyAllItems(OLE_NOTIFICATION wNotification, DWORD dwParam);
BOOL SaveModifiedPrompt();
void ConnectView(CWnd* pParentWnd, CView* pView);
void UpdateUsingHostObj(UINT nIDS, CCmdUI* pCmdUI);
// Message Maps
//{{AFX_MSG(COleServerDoc)
afx_msg void OnFileUpdate();
afx_msg void OnFileSaveCopyAs();
afx_msg void OnUpdateFileUpdate(CCmdUI* pCmdUI);
afx_msg void OnUpdateFileExit(CCmdUI* pCmdUI);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
// Interface Maps
public:
BEGIN_INTERFACE_PART(PersistStorage, IPersistStorage)
INIT_INTERFACE_PART(COleServerDoc, PersistStorage)
STDMETHOD(GetClassID)(LPCLSID);
STDMETHOD(IsDirty)();
STDMETHOD(InitNew)(LPSTORAGE);
STDMETHOD(Load)(LPSTORAGE);
STDMETHOD(Save)(LPSTORAGE, BOOL);
STDMETHOD(SaveCompleted)(LPSTORAGE);
STDMETHOD(HandsOffStorage)();
END_INTERFACE_PART(PersistStorage)
BEGIN_INTERFACE_PART(OleObject, IOleObject)
INIT_INTERFACE_PART(COleServerDoc, OleObject)
STDMETHOD(SetClientSite)(LPOLECLIENTSITE);
STDMETHOD(GetClientSite)(LPOLECLIENTSITE*);
STDMETHOD(SetHostNames)(LPCOLESTR, LPCOLESTR);
STDMETHOD(Close)(DWORD);
STDMETHOD(SetMoniker)(DWORD, LPMONIKER);
STDMETHOD(GetMoniker)(DWORD, DWORD, LPMONIKER*);
STDMETHOD(InitFromData)(LPDATAOBJECT, BOOL, DWORD);
STDMETHOD(GetClipboardData)(DWORD, LPDATAOBJECT*);
STDMETHOD(DoVerb)(LONG, LPMSG, LPOLECLIENTSITE, LONG, HWND, LPCRECT);
STDMETHOD(EnumVerbs)(IEnumOLEVERB**);
STDMETHOD(Update)();
STDMETHOD(IsUpToDate)();
STDMETHOD(GetUserClassID)(CLSID*);
STDMETHOD(GetUserType)(DWORD, LPOLESTR*);
STDMETHOD(SetExtent)(DWORD, LPSIZEL);
STDMETHOD(GetExtent)(DWORD, LPSIZEL);
STDMETHOD(Advise)(LPADVISESINK, LPDWORD);
STDMETHOD(Unadvise)(DWORD);
STDMETHOD(EnumAdvise)(LPENUMSTATDATA*);
STDMETHOD(GetMiscStatus)(DWORD, LPDWORD);
STDMETHOD(SetColorScheme)(LPLOGPALETTE);
END_INTERFACE_PART(OleObject)
BEGIN_INTERFACE_PART(DataObject, IDataObject)
INIT_INTERFACE_PART(COleServerDoc, DataObject)
STDMETHOD(GetData)(LPFORMATETC, LPSTGMEDIUM);
STDMETHOD(GetDataHere)(LPFORMATETC, LPSTGMEDIUM);
STDMETHOD(QueryGetData)(LPFORMATETC);
STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC, LPFORMATETC);
STDMETHOD(SetData)(LPFORMATETC, LPSTGMEDIUM, BOOL);
STDMETHOD(EnumFormatEtc)(DWORD, LPENUMFORMATETC*);
STDMETHOD(DAdvise)(LPFORMATETC, DWORD, LPADVISESINK, LPDWORD);
STDMETHOD(DUnadvise)(DWORD);
STDMETHOD(EnumDAdvise)(LPENUMSTATDATA*);
END_INTERFACE_PART(DataObject)
BEGIN_INTERFACE_PART(OleInPlaceObject, IOleInPlaceObject)
INIT_INTERFACE_PART(COleServerDoc, OleInPlaceObject)
STDMETHOD(GetWindow)(HWND*);
STDMETHOD(ContextSensitiveHelp)(BOOL);
STDMETHOD(InPlaceDeactivate)();
STDMETHOD(UIDeactivate)();
STDMETHOD(SetObjectRects)(LPCRECT, LPCRECT);
STDMETHOD(ReactivateAndUndo)();
END_INTERFACE_PART(OleInPlaceObject)
BEGIN_INTERFACE_PART(OleInPlaceActiveObject, IOleInPlaceActiveObject)
INIT_INTERFACE_PART(COleServerDoc, OleInPlaceActiveObject)
STDMETHOD(GetWindow)(HWND*);
STDMETHOD(ContextSensitiveHelp)(BOOL);
STDMETHOD(TranslateAccelerator)(LPMSG);
STDMETHOD(OnFrameWindowActivate)(BOOL);
STDMETHOD(OnDocWindowActivate)(BOOL);
STDMETHOD(ResizeBorder)(LPCRECT, LPOLEINPLACEUIWINDOW, BOOL);
STDMETHOD(EnableModeless)(BOOL);
END_INTERFACE_PART(OleInPlaceActiveObject)
DECLARE_INTERFACE_MAP()
friend class COleServer;
friend class COleServerItem;
friend class CDocObjectServer;
};
//////////////////////////////////////////////////////////////////////////////
// COleIPFrameWnd
class COleCntrFrameWnd;
class COleIPFrameWnd : public CFrameWnd
{
DECLARE_DYNCREATE(COleIPFrameWnd)
// Constructors
public:
COleIPFrameWnd();
// Overridables
public:
virtual BOOL OnCreateControlBars(CWnd* pWndFrame, CWnd* pWndDoc);
// create control bars on container windows (pWndDoc can be NULL)
virtual BOOL OnCreateControlBars(CFrameWnd* pWndFrame, CFrameWnd* pWndDoc);
// create control bars on container windows (pWndDoc can be NULL)
virtual void RepositionFrame(LPCRECT lpPosRect, LPCRECT lpClipRect);
// Advanced: reposition frame to wrap around new lpPosRect
// Implementation
public:
BOOL m_bUIActive; // TRUE if currently in uiacitve state
virtual BOOL LoadFrame(UINT nIDResource,
DWORD dwDefaultStyle = WS_CHILD|WS_BORDER|WS_CLIPSIBLINGS,
CWnd* pParentWnd = NULL,
CCreateContext* pContext = NULL);
virtual void RecalcLayout(BOOL bNotify = TRUE);
virtual BOOL PreTranslateMessage(MSG* pMsg);
virtual LRESULT OnSetMessageString(WPARAM wParam, LPARAM lParam);
virtual ~COleIPFrameWnd();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// in-place state
OLEINPLACEFRAMEINFO m_frameInfo;
LPOLEINPLACEFRAME m_lpFrame;
LPOLEINPLACEUIWINDOW m_lpDocFrame;
COleCntrFrameWnd* m_pMainFrame;
COleCntrFrameWnd* m_pDocFrame;
HMENU m_hSharedMenu;
OLEMENUGROUPWIDTHS m_menuWidths;
HOLEMENU m_hOleMenu;
CRect m_rectPos; // client area rect of the item
CRect m_rectClip; // area to which frame should be clipped
BOOL m_bInsideRecalc;
HMENU _m_Reserved;
// Advanced: in-place activation virtual implementation
virtual BOOL BuildSharedMenu();
virtual void DestroySharedMenu();
virtual HMENU GetInPlaceMenu();
// Advanced: possible override to change in-place sizing behavior
virtual void OnRequestPositionChange(LPCRECT lpRect);
protected:
//{{AFX_MSG(COleIPFrameWnd)
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg LRESULT OnRecalcParent(WPARAM wParam, LPARAM lParam);
afx_msg void OnIdleUpdateCmdUI();
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnDestroy();
afx_msg LRESULT OnResizeChild(WPARAM wParam, LPARAM lParam);
afx_msg void OnContextHelp();
afx_msg void OnUpdateControlBarMenu(CCmdUI* pCmdUI);
afx_msg BOOL OnBarCheck(UINT nID);
afx_msg void OnWindowPosChanging(LPWINDOWPOS lpWndPos);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
friend class COleServerDoc;
friend class COleCntrFrameWnd;
friend class CDocObjectServer;
};
/////////////////////////////////////////////////////////////////////////////
// COleResizeBar - supports in-place resizing in server applications
class COleResizeBar : public CControlBar
{
DECLARE_DYNAMIC(COleResizeBar)
// Constructors
public:
COleResizeBar();
BOOL Create(CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE,
UINT nID = AFX_IDW_RESIZE_BAR);
// Implementation
public:
virtual ~COleResizeBar();
virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
protected:
CRectTracker m_tracker; // implemented with a tracker
protected:
//{{AFX_MSG(COleResizeBar)
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnPaint();
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
afx_msg void OnLButtonDown(UINT, CPoint point);
afx_msg LRESULT OnSizeParent(WPARAM wParam, LPARAM lParam);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
// COleStreamFile - implementation of CFile which uses an IStream
class COleStreamFile : public CFile
{
DECLARE_DYNAMIC(COleStreamFile)
// Constructors and Destructors
public:
COleStreamFile(LPSTREAM lpStream = NULL);
// Operations
// Note: OpenStream and CreateStream can accept eith STGM_ flags or
// CFile::OpenFlags bits since common values are guaranteed to have
// the same semantics.
BOOL OpenStream(LPSTORAGE lpStorage, LPCTSTR lpszStreamName,
DWORD nOpenFlags = modeReadWrite|shareExclusive,
CFileException* pError = NULL);
BOOL CreateStream(LPSTORAGE lpStorage, LPCTSTR lpszStreamName,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -