home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / mfc / ole / tstcon / tcitem.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-03-27  |  10.1 KB  |  269 lines

  1. // CTestContainer98Item.h : interface of the CTestContainer98Item class
  2. //
  3.  
  4. #if !defined(AFX_CTESTCONTAINER98ITEM_H__1981850D_B837_11D0_8DF1_00C04FB68D60__INCLUDED_)
  5. #define AFX_CTESTCONTAINER98ITEM_H__1981850D_B837_11D0_8DF1_00C04FB68D60__INCLUDED_
  6.  
  7. #if _MSC_VER >= 1000
  8. #pragma once
  9. #endif // _MSC_VER >= 1000
  10.  
  11. #define IMPLTYPE_MASK (IMPLTYPEFLAG_FDEFAULT|IMPLTYPEFLAG_FSOURCE|\
  12.    IMPLTYPEFLAG_FRESTRICTED)
  13.  
  14. #define IMPLTYPE_DEFAULTSOURCE (IMPLTYPEFLAG_FDEFAULT|IMPLTYPEFLAG_FSOURCE)
  15. #define IMPLTYPE_DEFAULTINTERFACE (IMPLTYPEFLAG_FDEFAULT)
  16.  
  17. const int MARGIN_PIXELS = 5;
  18.  
  19. class CTestContainer98Doc;
  20. class CTestContainer98View;
  21.  
  22. class CTestContainer98Item : public COleClientItem
  23. {
  24.    DECLARE_SERIAL( CTestContainer98Item )
  25.  
  26. // Constructors
  27. public:
  28.    CTestContainer98Item( CTestContainer98Doc* pContainer = NULL );
  29.       // Note: pContainer is allowed to be NULL to enable IMPLEMENT_SERIALIZE.
  30.       //  IMPLEMENT_SERIALIZE requires the class have a constructor with
  31.       //  zero arguments.  Normally, OLE items are constructed with a
  32.       //  non-NULL document pointer.
  33.  
  34. // Attributes
  35. public:
  36.    CTestContainer98Doc* GetDocument()
  37.    {
  38.       return( (CTestContainer98Doc*)COleClientItem::GetDocument() );
  39.    }
  40.    CTestContainer98View* GetActiveView()
  41.    {
  42.       return( (CTestContainer98View*)COleClientItem::GetActiveView() );
  43.    }
  44.    CString GetDisplayName();
  45.    BOOL IsInsideOut() const;
  46.  
  47.    // ClassWizard generated virtual function overrides
  48.    //{{AFX_VIRTUAL(CTestContainer98Item)
  49.    public:
  50.    virtual void OnChange(OLE_NOTIFICATION wNotification, DWORD dwParam);
  51.    virtual void OnActivate();
  52.    protected:
  53.    virtual void OnGetItemPosition(CRect& rPosition);
  54.    virtual void OnGetClipRect(CRect& rPosition);
  55.    virtual void OnDeactivateUI(BOOL bUndoable);
  56.    virtual BOOL OnChangeItemPosition(const CRect& rectPos);
  57.    //}}AFX_VIRTUAL
  58.  
  59. // Implementation
  60. public:
  61.    void CopyToClipboard( CArchive& ar, IStorage* pStorage );
  62.    BOOL Create( REFCLSID clsid, LPCTSTR pszName = NULL );
  63.    BOOL CreateOrLoad( REFCLSID clsid, LPCTSTR pszName,
  64.       REFIID iidPersistanceMedium, IUnknown* pPeristanceMedium );
  65. //   BOOL CreateFromClipboard();
  66.    BOOL CreateFromClipboard( CArchive& ar, IStorage* pStorage );
  67. //   BOOL CreateFromData( COleDataObject* pData );
  68.    BOOL QuickActivate();
  69.    CInterfaceInfo* GetEventInfo();
  70.    CInterfaceInfo* GetMethodInfo();
  71.    BOOL GetPropertyPageCLSIDs( CArray< CLSID, CLSID& >& aclsidPages );
  72.    DWORD HitTest( CPoint point );
  73.    void DisplayAsDefault( BOOL tDefault );
  74.    BOOL Draw( CDC* pDC, LPCRECT prectBounds, DVASPECT nDrawAspect = DVASPECT(
  75.       -1 ) );
  76.    BOOL DrawBackToFront( CDC* pDC, LPCRECT prectBounds );
  77.    BOOL DrawFrontToBack( CDC* pDC, LPCRECT prectBounds );
  78.    void FreezeEvents( BOOL tFreeze );
  79.    DWORD GetActivationPolicy() const;
  80.    void OnDeselect();
  81.    void OnSelect();
  82.    BOOL OnWindowlessDragEnter( COleDataObject* pDataObject, DWORD dwKeyState,
  83.       CPoint point, DWORD* pdwDropEffect );
  84.    void OnWindowlessDragOver( DWORD dwKeyState, CPoint point,
  85.       DWORD* pdwDropEffect );
  86.    void OnWindowlessDragLeave();
  87.    void OnWindowlessDrop( COleDataObject* pDataObject, DWORD dwKeyState,
  88.       CPoint point, DWORD* pdwDropEffect );
  89.    DWORD OnPointerInactiveMove( CPoint point, DWORD dwKeyState );
  90.    DWORD OnPointerInactiveSetCursor( CPoint point, DWORD dwMouseMessage,
  91.       BOOL* ptHandled );
  92.    void Prepare();
  93.    BOOL ActsLikeButton() const;
  94.    BOOL ShouldActivateWhenVisible();
  95.    void UpdateStatusBar();
  96.    BOOL OnWindowMessage( const MSG* pMessage );
  97.    BOOL HasUIActiveState() const;
  98.    BOOL IsWindowless() const;
  99.    BOOL SupportsIPointerInactive() const;
  100.    HRESULT SaveToStorage( IStorage* pStorage );
  101.    HRESULT SaveToStream( IStream* pStream );
  102.    HRESULT SaveToPropertyBag( IPropertyBag* pPropertyBag );
  103.    COleDataSource* OnGetClipboardData( BOOL tIncludeLink, LPPOINT pptOffset,
  104.       LPSIZE pSize );
  105.  
  106.    BOOL m_tDisplayAsDefault;
  107.    BOOL m_tExtendedControl;
  108.    BOOL m_tWindowless;
  109.    DWORD m_dwAspectPass2;
  110.    DISPID m_dispidEvent;
  111.    DISPPARAMS m_dpLastParams;
  112.    IConnectionPointPtr m_pEventCP;
  113.    DWORD m_dwEventCookie;
  114.    IConnectionPointPtr m_pPropertyCP;
  115.    DWORD m_dwPropertyCookie;
  116.    CRect m_rect;
  117.    IDispatchPtr m_pCtlDispatch;
  118.    ITCExtendedControlPtr m_pExtendedControl;
  119.    IOleControlPtr m_pOleControl;
  120.    IOleInPlaceObjectWindowlessPtr m_pOleInPlaceObjectWindowless;
  121.    IViewObjectExPtr m_pViewObjectEx;
  122.    IPointerInactivePtr m_pPointerInactive;
  123.    IDropTargetPtr m_pDropTarget;
  124.    DWORD m_dwMiscStatus;
  125.    DWORD m_dwViewStatus;
  126.    CInterfaceInfo m_infoEvents;
  127.    CInterfaceInfo m_infoMethods;
  128.  
  129.    IUnknown* GetInterfaceHook( const void* pv );
  130.    void InvalidateItem();
  131.    void InvokeMethods();
  132.    void SetLoggingOptions();
  133.    BOOL IsInPlaceActive() const;
  134.    BOOL IsInvisibleAtRuntime() const;
  135.    BOOL IsUIActive() const;
  136.    void Move( const CRect& rect );
  137.    void OnAmbientPropertyChange( DISPID dispid );
  138.    void OnActivateUI();
  139.    void OnDeactivate();
  140.    void OnDeactivate( BOOL tNoRedraw );
  141.    virtual void OnEvent( DISPID dispid, DISPPARAMS* pdpParams );
  142.    void ReadItem( CArchive& ar );
  143.    void WriteItem( CArchive& ar );
  144.    void CommitItem( BOOL bSuccess );
  145.    void UpdateFromServerExtent();
  146.    ~CTestContainer98Item();
  147.  
  148. protected:
  149.    CONTROLINFO m_infoControl;
  150.    CString m_strDisplayName;
  151.    BOOL m_tInsideOut;
  152.    CRectTracker m_tracker;
  153.    CDC* m_pDC;
  154.    IBindHostPtr m_pBindHost;
  155.    void CleanupParams();
  156.    void CopyParams( DISPPARAMS* pdpParams );
  157.    HRESULT GetControlInfo();
  158.    BOOL FinishCreate( HRESULT hr );
  159.    HRESULT InitControlInfo();
  160.    void OnFocus( BOOL tGotFocus );
  161.    void Release( OLECLOSE dwCloseOption = OLECLOSE_NOSAVE );
  162.    IBindHost* GetBindHost();
  163.  
  164.    BEGIN_INTERFACE_PART( ServiceProvider, IServiceProvider )
  165.       STDMETHOD( QueryService )( REFGUID guidService, REFIID iid,
  166.          void** ppService );
  167.    END_INTERFACE_PART( ServiceProvider )
  168.  
  169.    BEGIN_INTERFACE_PART( EventHandler, IDispatch )
  170.       STDMETHOD( GetIDsOfNames )( REFIID iid, LPOLESTR* ppszNames, UINT nNames,
  171.          LCID lcid, DISPID* pDispIDs );
  172.       STDMETHOD( GetTypeInfo )( UINT iTypeInfo, LCID lcid,
  173.          ITypeInfo** ppTypeInfo );
  174.       STDMETHOD( GetTypeInfoCount )( UINT* pnInfoCount );
  175.       STDMETHOD( Invoke )( DISPID dispidMember, REFIID iid, LCID lcid,
  176.          WORD wFlags, DISPPARAMS* pdpParams, VARIANT* pvarResult,
  177.          EXCEPINFO* pExceptionInfo, UINT* piArgError );
  178.    END_INTERFACE_PART( EventHandler )
  179.  
  180.    BEGIN_INTERFACE_PART( PropertyNotifySink, IPropertyNotifySink )
  181.       STDMETHOD( OnChanged )( DISPID dispid );
  182.       STDMETHOD( OnRequestEdit )( DISPID dispid );
  183.    END_INTERFACE_PART( PropertyNotifySink )
  184.  
  185.    BEGIN_INTERFACE_PART( AmbientProperties, IDispatch )
  186.       STDMETHOD( GetIDsOfNames )( REFIID iid, LPOLESTR* ppszNames, UINT nNames,
  187.          LCID lcid, DISPID* pDispIDs );
  188.       STDMETHOD( GetTypeInfo )( UINT iTypeInfo, LCID lcid,
  189.          ITypeInfo** ppTypeInfo );
  190.       STDMETHOD( GetTypeInfoCount )( UINT* pnInfoCount );
  191.       STDMETHOD( Invoke )( DISPID dispidMember, REFIID iid, LCID lcid,
  192.          WORD wFlags, DISPPARAMS* pdpParams, VARIANT* pvarResult,
  193.          EXCEPINFO* pExceptionInfo, UINT* piArgError );
  194.    END_INTERFACE_PART( AmbientProperties )
  195.  
  196.    BEGIN_INTERFACE_PART( AdviseSinkEx, IAdviseSinkEx )
  197.       STDMETHOD_( void, OnClose )();
  198.       STDMETHOD_( void, OnDataChange )( FORMATETC* pFormatEtc,
  199.          STGMEDIUM* pStgMedium );
  200.       STDMETHOD_( void, OnRename )( IMoniker* pMoniker );
  201.       STDMETHOD_( void, OnSave )();
  202.       STDMETHOD_( void, OnViewChange )( DWORD dwAspect, LONG lindex );
  203.       STDMETHOD_( void, OnViewStatusChange )( DWORD dwViewStatus );
  204.    END_INTERFACE_PART( AdviseSinkEx )
  205.  
  206.    BEGIN_INTERFACE_PART( OleControlSite, IOleControlSite )
  207.       STDMETHOD( GetExtendedControl )( IDispatch** ppExtendedControl );
  208.       STDMETHOD( LockInPlaceActive )( BOOL tLock );
  209.       STDMETHOD( OnControlInfoChanged )();
  210.       STDMETHOD( OnFocus )( BOOL tGotFocus );
  211.       STDMETHOD( ShowPropertyFrame )();
  212.       STDMETHOD( TransformCoords )( POINTL* pptHiMetric, POINTF* pptContainer,
  213.          DWORD dwFlags );
  214.       STDMETHOD( TranslateAccelerator )( LPMSG pMessage, DWORD dwModifiers );
  215.    END_INTERFACE_PART( OleControlSite )
  216.  
  217.    BEGIN_INTERFACE_PART( OleInPlaceSiteWindowless, IOleInPlaceSiteWindowless )
  218.       STDMETHOD( ContextSensitiveHelp )( BOOL tEnterMode );
  219.       STDMETHOD( GetWindow )( HWND* phWnd );
  220.  
  221.       STDMETHOD( CanInPlaceActivate )();
  222.       STDMETHOD( DeactivateAndUndo )();
  223.       STDMETHOD( DiscardUndoState )();
  224.       STDMETHOD( GetWindowContext )( IOleInPlaceFrame** ppFrame,
  225.          IOleInPlaceUIWindow** ppDoc, LPRECT prectPos, LPRECT prectClip,
  226.          LPOLEINPLACEFRAMEINFO pFrameInfo );
  227.       STDMETHOD( OnInPlaceActivate )();
  228.       STDMETHOD( OnInPlaceDeactivate )();
  229.       STDMETHOD( OnPosRectChange )( LPCRECT prectPos );
  230.       STDMETHOD( OnUIActivate )();
  231.       STDMETHOD( OnUIDeactivate )( BOOL tUndoable );
  232.       STDMETHOD( Scroll )( SIZE sizeExtent );
  233.  
  234.       STDMETHOD( OnInPlaceActivateEx )( BOOL* ptNoRedraw, DWORD dwFlags );
  235.       STDMETHOD( OnInPlaceDeactivateEx )( BOOL tNoRedraw );
  236.       STDMETHOD( RequestUIActivate )();
  237.  
  238.       STDMETHOD( AdjustRect )( LPRECT prect );
  239.       STDMETHOD( CanWindowlessActivate )();
  240.       STDMETHOD( GetCapture )();
  241.       STDMETHOD( GetDC )( LPCRECT prect, DWORD dwFlags, HDC* phDC );
  242.       STDMETHOD( GetFocus )();
  243.       STDMETHOD( InvalidateRect )( LPCRECT prect, BOOL tErase );
  244.       STDMETHOD( InvalidateRgn )( HRGN hRgn, BOOL tErase );
  245.       STDMETHOD( OnDefWindowMessage )( UINT nMessage, WPARAM wParam,
  246.          LPARAM lParam, LRESULT* plResult );
  247.       STDMETHOD( ReleaseDC )( HDC hDC );
  248.       STDMETHOD( ScrollRect )( int dx, int dy, LPCRECT prectScroll,
  249.          LPCRECT prectClip );
  250.       STDMETHOD( SetCapture )( BOOL tCapture );
  251.       STDMETHOD( SetFocus )( BOOL tFocus );
  252.    END_INTERFACE_PART( OleInPlaceSiteWindowless );
  253.  
  254.    DECLARE_INTERFACE_MAP()
  255.  
  256. #ifdef _DEBUG
  257.    virtual void AssertValid() const;
  258.    virtual void Dump(CDumpContext& dc) const;
  259. #endif
  260.    virtual void Serialize(CArchive& ar);
  261. };
  262.  
  263. /////////////////////////////////////////////////////////////////////////////
  264.  
  265. //{{AFX_INSERT_LOCATION}}
  266. // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
  267.  
  268. #endif // !defined(AFX_CTESTCONTAINER98ITEM_H__1981850D_B837_11D0_8DF1_00C04FB68D60__INCLUDED_)
  269.