EXTCTL.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:2k
源码类别:

Windows编程

开发平台:

Visual C++

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