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 / extctl.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-03-27  |  2.3 KB  |  75 lines

  1. class CTestContainer98Item;
  2. class CTestContainer98View;
  3.  
  4. extern const IID IID_ITC98ExtendedControl;
  5.  
  6. #define DISPID_EXT_NAME 0x80010000
  7. #define DISPID_EXT_POSITIONX 0x80010001
  8. #define DISPID_EXT_POSITIONY 0x80010002
  9. #define DISPID_EXT_ACTIVATE 0x80010100
  10. #define DISPID_EXT_DEACTIVATE 0x80010101
  11. #define DISPID_EXT_UIACTIVATE 0x80010102
  12. #define DISPID_EXT_UIDEACTIVATE 0x80010103
  13.  
  14. class CExtendedControl :
  15.    public ITCExtendedControl
  16. {
  17. public:
  18.    CExtendedControl();
  19.    ~CExtendedControl();
  20.  
  21.    HRESULT Init( REFCLSID clsidControl, CTestContainer98Item* pItem );
  22.  
  23.    static HRESULT CreateInstance( REFCLSID clsidControl,
  24.       CTestContainer98Item* pItem, IUnknown* pOuterUnknown, REFIID iid,
  25.       void** ppInterface );
  26.  
  27. public:
  28.    STDMETHOD_( ULONG, AddRef )();
  29.    STDMETHOD_( ULONG, Release )();
  30.    STDMETHOD( QueryInterface )( REFIID iid, void** ppInterface );
  31.  
  32. public:
  33.    STDMETHOD( GetIDsOfNames )( REFIID iid, LPOLESTR* ppszNames, UINT nNames,
  34.       LCID lcid, DISPID* pDispIDs );
  35.    STDMETHOD( GetTypeInfo )( UINT iTypeInfo, LCID lcid,
  36.       ITypeInfo** ppTypeInfo );
  37.    STDMETHOD( GetTypeInfoCount )( UINT* pnInfoCount );
  38.    STDMETHOD( Invoke )( DISPID dispidMember, REFIID iid, LCID lcid,
  39.       WORD wFlags, DISPPARAMS* pdpParams, VARIANT* pvarResult,
  40.       EXCEPINFO* pExceptionInfo, UINT* piArgError );
  41.  
  42.    STDMETHOD( get_Name )( BSTR* pbstrName );
  43.    STDMETHOD( put_Name )( BSTR bstrName );
  44.    STDMETHOD( get_PositionX )( long* px );
  45.    STDMETHOD( put_PositionX )( long x );
  46.    STDMETHOD( get_PositionY )( long* py );
  47.    STDMETHOD( put_PositionY )( long y );
  48.    STDMETHOD( get_SizeX )( long* px );
  49.    STDMETHOD( put_SizeX )( long x );
  50.    STDMETHOD( get_SizeY )( long* py );
  51.    STDMETHOD( put_SizeY )( long y );
  52.  
  53.    STDMETHOD( raw_Activate )();
  54.    STDMETHOD( raw_Deactivate )();
  55.    STDMETHOD( raw_UIActivate )();
  56.    STDMETHOD( raw_UIDeactivate )();
  57.  
  58. protected:
  59.    HRESULT InternalInvoke( DISPID dispidMember, REFIID iid, LCID lcid,
  60.       WORD wFlags, DISPPARAMS* pdpParams, VARIANT* pvarResult,
  61.       EXCEPINFO* pExceptionInfo, UINT* piArgError );
  62.  
  63. protected:
  64.    ULONG m_nRefCount;
  65.    IUnknown* m_pControl;
  66.    IDispatchPtr m_pInnerDispatch;
  67.    ITypeInfoPtr m_pTypeInfo;
  68.    CTestContainer98Item* m_pItem;
  69.    CTestContainer98View* m_pView;
  70.    VARIANT_BOOL m_tVisible;
  71.    _bstr_t m_bstrName;
  72.    CPoint m_ptPosition;
  73.    CSize m_size;
  74. };
  75.