#ifndef _OCXITEM_H_ #define _OCXITEM_H_ //============================================================================= // (c) Copyright Wang Laboratories, Inc. 1995 All rights reserved. //----------------------------------------------------------------------------- // Project: Norway - Image Editor // // Component: COcxItem // // File Name: ocxitem.h //----------------------------------------------------------------------------- // Maintenance Log: /* $Header: S:\norway\iedit95\ocxitem.h_v 1.4 01 Dec 1995 14:44:12 LMACLENNAN $ $Log: S:\norway\iedit95\ocxitem.h_v $ * * Rev 1.4 01 Dec 1995 14:44:12 LMACLENNAN * back from VC++2.2 * * Rev 1.4 01 Dec 1995 13:05:16 LMACLENNAN * OnUpdateFrameTitle * * Rev 1.3 18 Oct 1995 10:42:00 GSAGER * added a new member function to check if the dispatch pointers are NULL * * Rev 1.2 09 Oct 1995 11:31:46 LMACLENNAN * VC++4.0 * * Rev 1.1 15 Jun 1995 15:41:40 LMACLENNAN * tracing to watch ole events * * Rev 1.0 31 May 1995 09:28:30 MMB * Initial entry */ //============================================================================= // ----------------------------> Includes <--------------------------- #include "ocxevent.h" // ----------------------------> typedefs <--------------------------- // ----------------------------> externs <--------------------------- class CIeditDoc; // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-> Class <-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= class COcxItem : public CIEditCntrItem { DECLARE_SERIAL(COcxItem) // Constructors public: COcxItem(CIEditDoc* pContainer = NULL); // Note: pContainer is allowed to be NULL to enable IMPLEMENT_SERIALIZE. // IMPLEMENT_SERIALIZE requires the class have a constructor with // zero arguments. Normally, OLE items are constructed with a // non-NULL document pointer. // Attributes public: void InitItem(OCXTYPE, const char *, COleDispatchDriver*, COcxDispatchEvents*); BOOL IsDispatchNull(UINT type); COleDispatchDriver* GetDispatchDriver() { return m_lpDispatchDriver; } BOOL CreateNewItem( CRect rcRect,OLERENDER render = OLERENDER_DRAW, CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL); BOOL GetEventsIID(IID *piid); void SetRect(CRect rcRect) {m_rcRect = rcRect;} void IPDebugDmp(const char*); // DEBUG IN-PLACE // Implementation public: ~COcxItem(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif virtual void Serialize(CArchive& ar); // THESE TWO for OLE in-place virtual void OnGetItemPosition(CRect& rPosition); virtual void OnDeactivate(); virtual void OnDeactivateUI(BOOL bUndoable); protected: virtual void OnChange(OLE_NOTIFICATION wNotification, DWORD dwParam); // THIS for OLE in-place virtual BOOL OnChangeItemPosition(const CRect& rectPos); // OLE overriding to gain control for cleanup forrced by ClientItem being // killed by inner MFC COleDocument::DeleteContents action. public: virtual void Release(OLECLOSE dwCloseOption = OLECLOSE_NOSAVE); // cleanup, detach (close if needed) virtual BOOL DoVerb(LONG nVerb, CView* pView, LPMSG lpMsg = NULL); // OLE end override protected: // 04/17/95 LDM MORE override for in-place visibility.... // ALREADY IN.. // virtual void OnGetItemPosition(CRect& rPosition); // implement OnGetItemPosition if you support in-place activation // Common overrides for in-place activation virtual BOOL OnScrollBy(CSize sizeExtent); protected: // Common overrides for applications supporting undo // ALREADY IN.. // virtual void OnDeactivateUI(BOOL bUndoable); virtual void OnDiscardUndoState(); virtual void OnDeactivateAndUndo(); // Common overrides for applications supporting links to embeddings virtual void OnShowItem(); // Advanced overrides for in-place activation virtual void OnGetClipRect(CRect& rClipRect); virtual BOOL CanActivate(); virtual void OnActivate(); virtual void OnActivateUI(); virtual BOOL OnGetWindowContext(CFrameWnd** ppMainFrame, CFrameWnd** ppDocFrame, LPOLEINPLACEFRAMEINFO lpFrameInfo); // virtual void OnDeactivate(); // ALREADY IN.. // virtual BOOL OnChangeItemPosition(const CRect& rectPos); // default calls SetItemRects and caches the pos rect public: // Advanced overrides for menu/title handling (rarely overridden) virtual void OnInsertMenus(CMenu* pMenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths); virtual void OnSetMenu(CMenu* pMenuShared, HOLEMENU holemenu, HWND hwndActiveObject); virtual void OnRemoveMenus(CMenu* pMenuShared); #ifdef IMG_MFC_40 virtual BOOL OnUpdateFrameTitle(); #else virtual void OnUpdateFrameTitle(); #endif // Advanced override for control bar handling virtual BOOL OnShowControlBars(CFrameWnd* pFrameWnd, BOOL bShow); // 04/17/95 LDM end test override // Implemented Interfaces protected: // Interface for Ambient Properties BEGIN_INTERFACE_PART(AmbientProps, IDispatch) STDMETHOD(GetTypeInfoCount)(unsigned int FAR*); STDMETHOD(GetTypeInfo)(unsigned int, LCID, ITypeInfo FAR* FAR*); STDMETHOD(GetIDsOfNames)(REFIID, OLECHAR FAR* FAR*, unsigned int, LCID, DISPID FAR*); STDMETHOD(Invoke)(DISPID, REFIID, LCID, unsigned short, DISPPARAMS FAR*, VARIANT FAR*, EXCEPINFO FAR*, unsigned int FAR*); END_INTERFACE_PART(AmbientProps) DECLARE_INTERFACE_MAP() // data members private : COleDispatchDriver* m_lpDispatchDriver; COcxDispatchEvents* m_lpDispatchEvents; DWORD m_dwConnEvents; CRect m_rcRect; CString m_szItem; OCXTYPE m_ocxtype; //BOOL m_inDelete; // Controls Recursion for Release/DeleteItem }; typedef COcxItem FAR* FAR* LPLPOCXITEM; #define DISPATCH_DRIVER 1 #define DISPATCH_EVENTS 2 #endif