home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / ocidl.idl < prev    next >
Text File  |  1998-04-25  |  42KB  |  1,813 lines

  1. //+---------------------------------------------------------------------------
  2. //
  3. //  Microsoft Windows
  4. //  Copyright (C) Microsoft Corporation, 1993 - 1997.
  5. //
  6. //  File: ocidl.idl
  7. //
  8. //----------------------------------------------------------------------------
  9.  
  10. cpp_quote("//+-------------------------------------------------------------------------")
  11. cpp_quote("//")
  12. cpp_quote("//  Microsoft Windows")
  13. cpp_quote("//  Copyright (C) Microsoft Corporation, 1993 - 1997.")
  14. cpp_quote("//")
  15. cpp_quote("//--------------------------------------------------------------------------")
  16.  
  17. #ifndef DO_NO_IMPORTS
  18. import "oleidl.idl";
  19. import "oaidl.idl";
  20. import "servprov.idl";
  21. import "urlmon.idl";
  22. #endif
  23.  
  24.  
  25. interface IEnumConnections;
  26. interface IEnumConnectionPoints;
  27. interface IConnectionPoint;
  28. interface IConnectionPointContainer;
  29.  
  30. interface IClassFactory2;
  31. interface IProvideClassInfo;
  32. interface IProvideClassInfo2;
  33. interface IProvideMultipleClassInfo;
  34. interface IOleControl;
  35. interface IOleControlSite;
  36. interface IPropertyPage;
  37. interface IPropertyPage2;
  38. interface IPropertyPageSite;
  39. interface IPropertyNotifySink;
  40. interface ISpecifyPropertyPages;
  41. interface IPersistMemory;
  42. interface IPersistStreamInit;
  43. interface IPersistPropertyBag;
  44. interface ISimpleFrameSite;
  45. interface IFont;
  46. interface IPicture;
  47. interface IFontEventsDisp;
  48. interface IFontDisp;
  49. interface IPictureDisp;
  50.  
  51. interface IAdviseSinkEx;
  52. interface IOleInPlaceObjectWindowless;
  53. interface IOleInPlaceSiteEx;
  54. interface IOleInPlaceSiteWindowless;
  55. interface IViewObjectEx;
  56. interface IOleUndoUnit;
  57. interface IOleParentUndoUnit;
  58. interface IEnumOleUndoUnits;
  59. interface IOleUndoManager;
  60. interface IPointerInactive;
  61. interface IObjectWithSite;
  62.  
  63. interface IErrorLog;
  64. interface IPropertyBag;
  65. interface IPerPropertyBrowsing;
  66.  
  67. interface IPropertyBag2;
  68. interface IPersistPropertyBag2;
  69.  
  70. interface IQuickActivate;
  71.  
  72.  
  73. #if !defined(_DCOM_OA_REMOTING_) && !defined(_DCOM_OC_REMOTING_)
  74.  
  75. [
  76.   version(1.0), pointer_default(unique)
  77. ]
  78.  
  79. interface IOleControlTypes
  80. {
  81.     typedef [v1_enum] enum tagUASFLAGS {
  82.         UAS_NORMAL          = 0x00,
  83.         UAS_BLOCKED         = 0x01,
  84.         UAS_NOPARENTENABLE  = 0x02,
  85.         UAS_MASK            = 0x03
  86.     } UASFLAGS;
  87.  
  88.     cpp_quote("/* State values for the DISPID_READYSTATE property */")
  89.     typedef [v1_enum] enum tagREADYSTATE {
  90.         READYSTATE_UNINITIALIZED= 0, // Never used except as default init state
  91.         READYSTATE_LOADING      = 1, // Control is loading its properties
  92.         READYSTATE_LOADED       = 2, // Has been init'ed via IPersist*::Load
  93.         READYSTATE_INTERACTIVE  = 3, // Interactive but not all data available
  94.         READYSTATE_COMPLETE     = 4  // Control has all its data
  95.     } READYSTATE;
  96.  
  97. #if _MIDL_USER_MARSHAL_DISABLED
  98.  
  99.     #define HWND        UserHWND
  100.     #define HACCEL      UserHACCEL
  101.     #define HDC         UserHDC
  102.     #define HFONT       UserHFONT
  103.     #define MSG         UserMSG
  104.     #define BSTR        UserBSTR
  105.     #define VARIANT     UserVARIANT
  106.     #define EXCEPINFO   UserEXCEPINFO
  107.  
  108.     typedef struct tagUserHWND {
  109.         wireHWND pRemHwnd;
  110.     } UserHWND;
  111.  
  112.     typedef struct tagUserHWND UserHACCEL;
  113.     typedef struct tagUserHWND UserHDC;
  114.     typedef struct tagUserHWND UserHFONT;
  115.  
  116.     typedef struct tagUserMSG {
  117.         wireHWND pRemHwnd;
  118.         UINT   message;
  119.         WPARAM wParam;
  120.         LPARAM lParam;
  121.         DWORD  time;
  122.         POINT  pt;
  123.     } UserMSG;
  124.  
  125.     typedef struct tagUserBSTR {
  126.         wireBSTR pBstrBlob;
  127.     } UserBSTR;
  128.  
  129.     typedef struct tagVARIANT_BLOB {
  130.         DWORD clSize;
  131.         DWORD rpcReserved;
  132.         [size_is(clSize-1)] ULONGLONG ahData[];
  133.     } * wireVARIANT_BLOB;
  134.  
  135.     typedef struct tagUserVARIANT {
  136.         wireVARIANT_BLOB pVarBlob;
  137.     } UserVARIANT;
  138.  
  139.     typedef struct tagUserEXCEPINFO {
  140.         WORD  wCode;
  141.         WORD  wReserved;
  142.         wireBSTR bstrSource;
  143.         wireBSTR bstrDescription;
  144.         wireBSTR bstrHelpFile;
  145.         DWORD dwHelpContext;
  146.         ULONG pvReserved;
  147.         ULONG pfnDeferredFillIn;
  148.         SCODE scode;
  149.     } UserEXCEPINFO;
  150.  
  151. #endif // _MIDL_USER_MARSHAL_DISABLED
  152. }
  153.  
  154.  
  155. [
  156.     object,
  157.     uuid(B196B287-BAB4-101A-B69C-00AA00341D07),
  158.     pointer_default(unique)
  159. ]
  160.  
  161. interface IEnumConnections : IUnknown
  162. {
  163.     typedef IEnumConnections * PENUMCONNECTIONS;
  164.     typedef IEnumConnections * LPENUMCONNECTIONS;
  165.  
  166.     typedef struct tagCONNECTDATA {
  167.         IUnknown *  pUnk;
  168.         DWORD       dwCookie;
  169.     } CONNECTDATA;
  170.  
  171.     typedef struct tagCONNECTDATA * PCONNECTDATA;
  172.     typedef struct tagCONNECTDATA * LPCONNECTDATA;
  173.  
  174.     [local]
  175.     HRESULT Next(
  176.                 [in]  ULONG cConnections,
  177.                 [out, size_is(cConnections), length_is(*pcFetched)]
  178.                       LPCONNECTDATA rgcd,
  179.                 [out] ULONG * pcFetched
  180.             );
  181.  
  182.     [call_as(Next)]
  183.     HRESULT RemoteNext(
  184.                 [in]  ULONG cConnections,
  185.                 [out, size_is(cConnections), length_is(*pcFetched)]
  186.                       LPCONNECTDATA rgcd,
  187.                 [out] ULONG * pcFetched
  188.             );
  189.  
  190.     HRESULT Skip(
  191.                 [in]  ULONG cConnections
  192.             );
  193.  
  194.     HRESULT Reset(
  195.                 void
  196.             );
  197.  
  198.     HRESULT Clone(
  199.                 [out] IEnumConnections ** ppEnum
  200.             );
  201. }
  202.  
  203.  
  204. [
  205.     object,
  206.     uuid(B196B286-BAB4-101A-B69C-00AA00341D07),
  207.     pointer_default(unique)
  208. ]
  209.  
  210. interface IConnectionPoint : IUnknown
  211. {
  212.     typedef IConnectionPoint * PCONNECTIONPOINT;
  213.     typedef IConnectionPoint * LPCONNECTIONPOINT;
  214.  
  215.     HRESULT GetConnectionInterface(
  216.                 [out] IID * pIID
  217.             );
  218.  
  219.     HRESULT GetConnectionPointContainer(
  220.                 [out] IConnectionPointContainer ** ppCPC
  221.             );
  222.  
  223.     HRESULT Advise(
  224.                 [in] IUnknown * pUnkSink,
  225.                 [out] DWORD * pdwCookie
  226.             );
  227.  
  228.     HRESULT Unadvise(
  229.                 [in] DWORD dwCookie
  230.             );
  231.  
  232.     HRESULT EnumConnections(
  233.                 [out] IEnumConnections ** ppEnum
  234.     );
  235. }
  236.  
  237.  
  238. [
  239.     object,
  240.     uuid(B196B285-BAB4-101A-B69C-00AA00341D07),
  241.     pointer_default(unique)
  242. ]
  243.  
  244. interface IEnumConnectionPoints : IUnknown
  245. {
  246.     typedef IEnumConnectionPoints * PENUMCONNECTIONPOINTS;
  247.     typedef IEnumConnectionPoints * LPENUMCONNECTIONPOINTS;
  248.  
  249.     [local]
  250.     HRESULT Next(
  251.                 [in] ULONG cConnections,
  252.                 [out, size_is(cConnections), length_is(*pcFetched)]
  253.                       LPCONNECTIONPOINT * ppCP,
  254.                 [out] ULONG * pcFetched
  255.             );
  256.  
  257.     [call_as(Next)]
  258.     HRESULT RemoteNext(
  259.                 [in]  ULONG cConnections,
  260.                 [out, size_is(cConnections), length_is(*pcFetched)]
  261.                       LPCONNECTIONPOINT * ppCP,
  262.                 [out] ULONG * pcFetched
  263.             );
  264.  
  265.     HRESULT Skip(
  266.                 [in] ULONG cConnections
  267.             );
  268.  
  269.     HRESULT Reset(
  270.                 void
  271.             );
  272.  
  273.     HRESULT Clone(
  274.                 [out] IEnumConnectionPoints ** ppEnum
  275.             );
  276. }
  277.  
  278.  
  279. [
  280.     object,
  281.     uuid(B196B284-BAB4-101A-B69C-00AA00341D07),
  282.     pointer_default(unique)
  283. ]
  284.  
  285. interface IConnectionPointContainer : IUnknown
  286. {
  287.     typedef IConnectionPointContainer * PCONNECTIONPOINTCONTAINER;
  288.     typedef IConnectionPointContainer * LPCONNECTIONPOINTCONTAINER;
  289.  
  290.     HRESULT EnumConnectionPoints
  291.     (
  292.         [out] IEnumConnectionPoints ** ppEnum
  293.     );
  294.  
  295.     HRESULT FindConnectionPoint
  296.     (
  297.         [in] REFIID riid,
  298.         [out] IConnectionPoint ** ppCP
  299.     );
  300. }
  301.  
  302.  
  303. [
  304.     object,
  305.     uuid(B196B28F-BAB4-101A-B69C-00AA00341D07),
  306.     pointer_default(unique)
  307. ]
  308.  
  309. interface IClassFactory2 : IClassFactory
  310. {
  311.     typedef IClassFactory2 * LPCLASSFACTORY2;
  312.  
  313.     typedef struct tagLICINFO {
  314.         LONG cbLicInfo;
  315.         BOOL fRuntimeKeyAvail;
  316.         BOOL fLicVerified;
  317.     } LICINFO;
  318.  
  319.     typedef struct tagLICINFO * LPLICINFO;
  320.  
  321.     HRESULT GetLicInfo(
  322.                 [out] LICINFO * pLicInfo
  323.             );
  324.  
  325.     HRESULT RequestLicKey(
  326.                 [in] DWORD dwReserved,
  327.                 [out] BSTR * pBstrKey
  328.             );
  329.  
  330.     [local]
  331.     HRESULT CreateInstanceLic(
  332.                 [in] IUnknown * pUnkOuter,
  333.                 [in] IUnknown * pUnkReserved,
  334.                 [in] REFIID riid,
  335.                 [in] BSTR bstrKey,
  336.                 [out, iid_is(riid)] PVOID * ppvObj
  337.             );
  338.  
  339.     [call_as(CreateInstanceLic)]
  340.     HRESULT RemoteCreateInstanceLic(
  341.                 [in] REFIID riid,
  342.                 [in] BSTR bstrKey,
  343.                 [out, iid_is(riid)] IUnknown ** ppvObj
  344.             );
  345. }
  346.  
  347.  
  348. [
  349.     object,
  350.     uuid(B196B283-BAB4-101A-B69C-00AA00341D07),
  351.     pointer_default(unique)
  352. ]
  353.  
  354. interface IProvideClassInfo : IUnknown
  355. {
  356.     typedef IProvideClassInfo * LPPROVIDECLASSINFO;
  357.  
  358.     HRESULT GetClassInfo(
  359.                 [out] ITypeInfo ** ppTI
  360.             );
  361. }
  362.  
  363.  
  364. [
  365.     object,
  366.     uuid(A6BC3AC0-DBAA-11CE-9DE3-00AA004BB851),
  367.     pointer_default(unique)
  368. ]
  369.  
  370. interface IProvideClassInfo2 : IProvideClassInfo
  371. {
  372.     typedef IProvideClassInfo2 * LPPROVIDECLASSINFO2;
  373.  
  374.     typedef enum tagGUIDKIND {
  375.         GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1
  376.     } GUIDKIND;
  377.  
  378.     HRESULT GetGUID(
  379.                 [in]  DWORD dwGuidKind,
  380.                 [out] GUID * pGUID
  381.             );
  382. }
  383.  
  384.  
  385. [
  386.     object,
  387.     uuid(A7ABA9C1-8983-11cf-8F20-00805F2CD064),
  388.     pointer_default(unique)
  389. ]
  390.  
  391. interface IProvideMultipleClassInfo : IProvideClassInfo2
  392. {
  393.     cpp_quote("#define MULTICLASSINFO_GETTYPEINFO           0x00000001")
  394.     cpp_quote("#define MULTICLASSINFO_GETNUMRESERVEDDISPIDS 0x00000002")
  395.     cpp_quote("#define MULTICLASSINFO_GETIIDPRIMARY         0x00000004")
  396.     cpp_quote("#define MULTICLASSINFO_GETIIDSOURCE          0x00000008")
  397.     cpp_quote("#define TIFLAGS_EXTENDDISPATCHONLY           0x00000001")
  398.  
  399.     typedef IProvideMultipleClassInfo * LPPROVIDEMULTIPLECLASSINFO;
  400.  
  401.     HRESULT GetMultiTypeInfoCount( 
  402.                 [out] ULONG * pcti
  403.             );
  404.  
  405.     HRESULT GetInfoOfIndex( 
  406.                 [in]  ULONG iti,
  407.                 [in]  DWORD dwFlags,
  408.                 [out] ITypeInfo ** pptiCoClass,
  409.                 [out] DWORD * pdwTIFlags,
  410.                 [out] ULONG * pcdispidReserved,
  411.                 [out] IID   * piidPrimary,
  412.                 [out] IID   * piidSource
  413.             );
  414. }
  415.  
  416.  
  417. [
  418.     object,
  419.     uuid(B196B288-BAB4-101A-B69C-00AA00341D07),
  420.     pointer_default(unique)
  421. ]
  422.  
  423. interface IOleControl : IUnknown
  424. {
  425.     typedef IOleControl * LPOLECONTROL;
  426.  
  427.     typedef struct tagCONTROLINFO {
  428.         ULONG  cb;
  429.         HACCEL hAccel;
  430.         USHORT cAccel;
  431.         DWORD  dwFlags;
  432.     } CONTROLINFO;
  433.  
  434.     typedef struct tagCONTROLINFO * LPCONTROLINFO;
  435.  
  436.     typedef enum tagCTRLINFO {
  437.         CTRLINFO_EATS_RETURN = 1,
  438.         CTRLINFO_EATS_ESCAPE = 2
  439.     } CTRLINFO;
  440.  
  441.     HRESULT GetControlInfo(
  442.                 [out] CONTROLINFO * pCI
  443.             );
  444.  
  445.     HRESULT OnMnemonic(
  446.                 [in] MSG * pMsg
  447.             );
  448.  
  449.     HRESULT OnAmbientPropertyChange(
  450.                 [in] DISPID dispID
  451.             );
  452.  
  453.     HRESULT FreezeEvents(
  454.                 [in] BOOL bFreeze
  455.             );
  456. }
  457.  
  458.  
  459. [
  460.     object,
  461.     uuid(B196B289-BAB4-101A-B69C-00AA00341D07),
  462.     pointer_default(unique)
  463. ]
  464.  
  465. interface IOleControlSite : IUnknown
  466. {
  467.     typedef IOleControlSite * LPOLECONTROLSITE;
  468.  
  469.     typedef struct tagPOINTF {
  470.         FLOAT x;
  471.         FLOAT y;
  472.     } POINTF;
  473.  
  474.     typedef struct tagPOINTF * LPPOINTF;
  475.  
  476.     typedef enum tagXFORMCOORDS {
  477.         XFORMCOORDS_POSITION            = 0x1,
  478.         XFORMCOORDS_SIZE                = 0x2,
  479.         XFORMCOORDS_HIMETRICTOCONTAINER = 0x4,
  480.         XFORMCOORDS_CONTAINERTOHIMETRIC = 0x8,
  481.         XFORMCOORDS_EVENTCOMPAT         = 0x10
  482.     } XFORMCOORDS;
  483.  
  484.     HRESULT OnControlInfoChanged(
  485.                 void
  486.             );
  487.  
  488.     HRESULT LockInPlaceActive(
  489.                 [in] BOOL fLock
  490.             );
  491.  
  492.     HRESULT GetExtendedControl(
  493.                 [out] IDispatch ** ppDisp
  494.             );
  495.  
  496.     HRESULT TransformCoords(
  497.                 [in, out] POINTL * pPtlHimetric,
  498.                 [in, out] POINTF * pPtfContainer,
  499.                 [in] DWORD dwFlags
  500.             );
  501.  
  502.     HRESULT TranslateAccelerator(
  503.                 [in] MSG * pMsg,
  504.                 [in] DWORD grfModifiers
  505.             );
  506.  
  507.     HRESULT OnFocus(
  508.                 [in] BOOL fGotFocus
  509.             );
  510.  
  511.     HRESULT ShowPropertyFrame(
  512.                 void
  513.             );
  514. }
  515.  
  516.  
  517. [
  518.     object,
  519.     uuid(B196B28D-BAB4-101A-B69C-00AA00341D07),
  520.     pointer_default(unique)
  521. ]
  522.  
  523. interface IPropertyPage : IUnknown
  524. {
  525.     typedef IPropertyPage * LPPROPERTYPAGE;
  526.  
  527.     typedef struct tagPROPPAGEINFO {
  528.         ULONG    cb;
  529.         LPOLESTR pszTitle;
  530.         SIZE     size;
  531.         LPOLESTR pszDocString;
  532.         LPOLESTR pszHelpFile;
  533.         DWORD    dwHelpContext;
  534.     } PROPPAGEINFO;
  535.  
  536.     typedef struct tagPROPPAGEINFO * LPPROPPAGEINFO;
  537.  
  538.     HRESULT SetPageSite(
  539.                 [in] IPropertyPageSite * pPageSite
  540.             );
  541.  
  542.     HRESULT Activate(
  543.                 [in] HWND hWndParent,
  544.                 [in] LPCRECT pRect,
  545.                 [in] BOOL bModal
  546.             );
  547.  
  548.     HRESULT Deactivate(
  549.                 void
  550.             );
  551.  
  552.     HRESULT GetPageInfo(
  553.                 [out] PROPPAGEINFO * pPageInfo
  554.             );
  555.  
  556.     HRESULT SetObjects(
  557.                 [in] ULONG cObjects,
  558.                 [in, size_is(cObjects)] IUnknown ** ppUnk
  559.             );
  560.  
  561.     HRESULT Show(
  562.                 [in] UINT nCmdShow
  563.             );
  564.  
  565.     HRESULT Move(
  566.                 [in] LPCRECT pRect
  567.             );
  568.  
  569.     HRESULT IsPageDirty(
  570.                 void
  571.             );
  572.  
  573.     HRESULT Apply(
  574.                 void
  575.             );
  576.  
  577.     HRESULT Help(
  578.                 [in] LPCOLESTR pszHelpDir
  579.             );
  580.  
  581.     HRESULT TranslateAccelerator(
  582.                 [in] MSG * pMsg
  583.             );
  584. }
  585.  
  586.  
  587. [
  588.     object,
  589.     uuid(01E44665-24AC-101B-84ED-08002B2EC713),
  590.     pointer_default(unique)
  591. ]
  592.  
  593. interface IPropertyPage2 : IPropertyPage
  594. {
  595.     typedef IPropertyPage2 * LPPROPERTYPAGE2;
  596.  
  597.     HRESULT EditProperty(
  598.                 [in] DISPID dispID
  599.             );
  600. }
  601.  
  602.  
  603. [
  604.     object,
  605.     uuid(B196B28C-BAB4-101A-B69C-00AA00341D07),
  606.     pointer_default(unique)
  607. ]
  608.  
  609. interface IPropertyPageSite : IUnknown
  610. {
  611.     typedef IPropertyPageSite * LPPROPERTYPAGESITE;
  612.  
  613.     typedef enum tagPROPPAGESTATUS {
  614.         PROPPAGESTATUS_DIRTY    = 0x01,
  615.         PROPPAGESTATUS_VALIDATE = 0x02,
  616.         PROPPAGESTATUS_CLEAN    = 0x04
  617.     } PROPPAGESTATUS;
  618.  
  619.     HRESULT OnStatusChange(
  620.                 [in] DWORD dwFlags
  621.             );
  622.  
  623.     HRESULT GetLocaleID(
  624.                 [out] LCID * pLocaleID
  625.             );
  626.  
  627.     HRESULT GetPageContainer(
  628.                 [out] IUnknown ** ppUnk
  629.             );
  630.  
  631.     HRESULT TranslateAccelerator(
  632.                 [in] MSG * pMsg
  633.             );
  634. }
  635.  
  636.  
  637. [
  638.     object,
  639.     uuid(9BFBBC02-EFF1-101A-84ED-00AA00341D07),
  640.     pointer_default(unique)
  641. ]
  642.  
  643. interface IPropertyNotifySink : IUnknown
  644. {
  645.     typedef IPropertyNotifySink * LPPROPERTYNOTIFYSINK;
  646.  
  647.     HRESULT OnChanged(
  648.                 [in] DISPID dispID
  649.             );
  650.  
  651.     HRESULT OnRequestEdit(
  652.                 [in] DISPID dispID
  653.             );
  654. }
  655.  
  656.  
  657. [
  658.     object,
  659.     uuid(B196B28B-BAB4-101A-B69C-00AA00341D07),
  660.     pointer_default(unique)
  661. ]
  662.  
  663. interface ISpecifyPropertyPages : IUnknown
  664. {
  665.     typedef ISpecifyPropertyPages * LPSPECIFYPROPERTYPAGES;
  666.  
  667.     typedef struct tagCAUUID {
  668.         ULONG cElems;
  669.         [size_is(cElems)] GUID * pElems;
  670.     } CAUUID;
  671.  
  672.     typedef struct tagCAUUID * LPCAUUID;
  673.  
  674.     HRESULT GetPages(
  675.                 [out] CAUUID * pPages
  676.             );
  677. }
  678.  
  679.  
  680. [
  681.     object,
  682.     uuid(BD1AE5E0-A6AE-11CE-BD37-504200C10000),
  683.     pointer_default(unique)
  684. ]
  685.  
  686. interface IPersistMemory : IPersist
  687. {
  688.     typedef IPersistMemory * LPPERSISTMEMORY;
  689.  
  690.     HRESULT IsDirty(
  691.                 void
  692.             );
  693.  
  694.     [local]
  695.     HRESULT Load(
  696.                 [in, size_is(cbSize)] LPVOID pMem,
  697.                 [in] ULONG cbSize
  698.             );
  699.  
  700.     [call_as(Load)]
  701.     HRESULT RemoteLoad(
  702.                 [in, size_is(cbSize)] BYTE * pMem,
  703.                 [in] ULONG cbSize
  704.             );
  705.  
  706.     [local]
  707.     HRESULT Save(
  708.                 [out, size_is(cbSize)] LPVOID pMem,
  709.                 [in] BOOL fClearDirty,
  710.                 [in] ULONG cbSize
  711.             );
  712.  
  713.     [call_as(Save)]
  714.     HRESULT RemoteSave(
  715.                 [out, size_is(cbSize)] BYTE * pMem,
  716.                 [in] BOOL fClearDirty,
  717.                 [in] ULONG cbSize
  718.             );
  719.  
  720.     HRESULT GetSizeMax(
  721.                 [out] ULONG * pCbSize
  722.             );
  723.  
  724.     HRESULT InitNew(
  725.                 void
  726.             );
  727. }
  728.  
  729.  
  730. [
  731.     object,
  732.     uuid(7FD52380-4E07-101B-AE2D-08002B2EC713),
  733.     pointer_default(unique)
  734. ]
  735.  
  736. interface IPersistStreamInit : IPersist
  737. {
  738.     typedef IPersistStreamInit * LPPERSISTSTREAMINIT;
  739.  
  740.     HRESULT IsDirty(
  741.                 void
  742.             );
  743.  
  744.     HRESULT Load(
  745.                 [in] LPSTREAM pStm
  746.             );
  747.  
  748.     HRESULT Save(
  749.                 [in] LPSTREAM pStm,
  750.                 [in] BOOL fClearDirty
  751.             );
  752.  
  753.     HRESULT GetSizeMax(
  754.                 [out] ULARGE_INTEGER * pCbSize
  755.             );
  756.  
  757.     HRESULT InitNew(
  758.                 void
  759.             );
  760. }
  761.  
  762.  
  763. [
  764.     object,
  765.     uuid(37D84F60-42CB-11CE-8135-00AA004BB851),
  766.     pointer_default(unique)
  767. ]
  768.  
  769. interface IPersistPropertyBag : IPersist
  770. {
  771.     typedef IPersistPropertyBag * LPPERSISTPROPERTYBAG;
  772.  
  773.     HRESULT InitNew(
  774.                 void
  775.             );
  776.  
  777.     HRESULT Load(
  778.                 [in] IPropertyBag * pPropBag,
  779.                 [in] IErrorLog * pErrorLog
  780.             );
  781.  
  782.     HRESULT Save(
  783.                 [in] IPropertyBag * pPropBag,
  784.                 [in] BOOL fClearDirty,
  785.                 [in] BOOL fSaveAllProperties
  786.             );
  787. }
  788.  
  789.  
  790. [
  791.     object,
  792.     uuid(742B0E01-14E6-101B-914E-00AA00300CAB),
  793.     pointer_default(unique)
  794. ]
  795.  
  796. interface ISimpleFrameSite : IUnknown
  797. {
  798.     typedef ISimpleFrameSite * LPSIMPLEFRAMESITE;
  799.  
  800.     HRESULT PreMessageFilter(
  801.                 [in] HWND hWnd,
  802.                 [in] UINT msg,
  803.                 [in] WPARAM wp,
  804.                 [in] LPARAM lp,
  805.                 [out] LRESULT * plResult,
  806.                 [out] DWORD * pdwCookie
  807.             );
  808.  
  809.     HRESULT PostMessageFilter(
  810.                 [in] HWND hWnd,
  811.                 [in] UINT msg,
  812.                 [in] WPARAM wp,
  813.                 [in] LPARAM lp,
  814.                 [out] LRESULT *plResult,
  815.                 [in] DWORD dwCookie
  816.             );
  817. }
  818.  
  819.  
  820. [
  821.     object,
  822.     uuid(BEF6E002-A874-101A-8BBA-00AA00300CAB),
  823.     pointer_default(unique)
  824. ]
  825.  
  826. interface IFont : IUnknown
  827. {
  828.     typedef IFont * LPFONT;
  829.  
  830. cpp_quote("#if defined(_WIN32) && !defined(OLE2ANSI)")
  831.     typedef TEXTMETRICW TEXTMETRICOLE;
  832. cpp_quote("#else")
  833. cpp_quote("typedef TEXTMETRIC TEXTMETRICOLE;")
  834. cpp_quote("#endif")
  835.  
  836.     typedef TEXTMETRICOLE * LPTEXTMETRICOLE;
  837.  
  838.     HRESULT get_Name(
  839.                 [out] BSTR * pName
  840.             );
  841.  
  842.     HRESULT put_Name(
  843.                 [in] BSTR name
  844.             );
  845.  
  846.     HRESULT get_Size(
  847.                 [out] CY * pSize
  848.             );
  849.  
  850.     HRESULT put_Size(
  851.                 [in] CY size
  852.             );
  853.  
  854.     HRESULT get_Bold(
  855.                 [out] BOOL * pBold
  856.             );
  857.  
  858.     HRESULT put_Bold(
  859.                 [in] BOOL bold
  860.             );
  861.  
  862.     HRESULT get_Italic(
  863.                 [out] BOOL * pItalic
  864.             );
  865.  
  866.     HRESULT put_Italic(
  867.                 [in] BOOL italic
  868.             );
  869.  
  870.     HRESULT get_Underline(
  871.                 [out] BOOL * pUnderline
  872.             );
  873.  
  874.     HRESULT put_Underline(
  875.                 [in] BOOL underline
  876.             );
  877.  
  878.     HRESULT get_Strikethrough(
  879.                 [out] BOOL * pStrikethrough
  880.             );
  881.  
  882.     HRESULT put_Strikethrough(
  883.                 [in] BOOL strikethrough
  884.             );
  885.  
  886.     HRESULT get_Weight(
  887.                 [out] SHORT * pWeight
  888.             );
  889.  
  890.     HRESULT put_Weight(
  891.                 [in] SHORT weight
  892.             );
  893.  
  894.     HRESULT get_Charset(
  895.                 [out] SHORT * pCharset
  896.             );
  897.  
  898.     HRESULT put_Charset(
  899.                 [in] SHORT charset
  900.             );
  901.  
  902.     HRESULT get_hFont(
  903.                 [out] HFONT * phFont
  904.             );
  905.  
  906.     HRESULT Clone(
  907.                 [out] IFont ** ppFont
  908.             );
  909.  
  910.     HRESULT IsEqual(
  911.                 [in] IFont * pFontOther
  912.             );
  913.  
  914.     HRESULT SetRatio(
  915.                 [in] LONG cyLogical,
  916.                 [in] LONG cyHimetric
  917.             );
  918.  
  919.     HRESULT QueryTextMetrics(
  920.                 [out] TEXTMETRICOLE * pTM
  921.             );
  922.  
  923.     HRESULT AddRefHfont(
  924.                 [in] HFONT hFont
  925.             );
  926.  
  927.     HRESULT ReleaseHfont(
  928.                 [in] HFONT hFont
  929.             );
  930.  
  931.     HRESULT SetHdc(
  932.                 [in] HDC hDC
  933.             );
  934. }
  935.  
  936.  
  937. [
  938.     object,
  939.     uuid(7BF80980-BF32-101A-8BBB-00AA00300CAB),
  940.     pointer_default(unique)
  941. ]
  942.  
  943. interface IPicture : IUnknown
  944. {
  945.     typedef IPicture * LPPICTURE;
  946.  
  947.     typedef enum tagPictureAttributes {
  948.         PICTURE_SCALABLE    = 0x1,
  949.         PICTURE_TRANSPARENT = 0x2
  950.     } PICTUREATTRIBUTES;
  951.  
  952.     typedef UINT OLE_HANDLE;
  953.     typedef LONG OLE_XPOS_HIMETRIC;
  954.     typedef LONG OLE_YPOS_HIMETRIC;
  955.     typedef LONG OLE_XSIZE_HIMETRIC;
  956.     typedef LONG OLE_YSIZE_HIMETRIC;
  957.  
  958.     HRESULT get_Handle(
  959.                 [out] OLE_HANDLE * pHandle
  960.             );
  961.  
  962.     HRESULT get_hPal(
  963.                 [out] OLE_HANDLE * phPal
  964.             );
  965.  
  966.     HRESULT get_Type(
  967.                 [out] SHORT * pType
  968.             );
  969.  
  970.     HRESULT get_Width(
  971.                 [out] OLE_XSIZE_HIMETRIC * pWidth
  972.             );
  973.  
  974.     HRESULT get_Height(
  975.                 [out] OLE_YSIZE_HIMETRIC * pHeight
  976.             );
  977.  
  978.     HRESULT Render(
  979.                 [in] HDC hDC,
  980.                 [in] LONG x,
  981.                 [in] LONG y,
  982.                 [in] LONG cx,
  983.                 [in] LONG cy,
  984.                 [in] OLE_XPOS_HIMETRIC xSrc,
  985.                 [in] OLE_YPOS_HIMETRIC ySrc,
  986.                 [in] OLE_XSIZE_HIMETRIC cxSrc,
  987.                 [in] OLE_YSIZE_HIMETRIC cySrc,
  988.                 [in] LPCRECT pRcWBounds
  989.             );
  990.  
  991.     HRESULT set_hPal(
  992.                 [in] OLE_HANDLE hPal
  993.             );
  994.  
  995.     HRESULT get_CurDC(
  996.                 [out] HDC * phDC
  997.             );
  998.  
  999.     HRESULT SelectPicture(
  1000.                 [in] HDC hDCIn,
  1001.                 [out] HDC * phDCOut,
  1002.                 [out] OLE_HANDLE * phBmpOut
  1003.             );
  1004.  
  1005.     HRESULT get_KeepOriginalFormat(
  1006.                 [out] BOOL * pKeep
  1007.             );
  1008.  
  1009.     HRESULT put_KeepOriginalFormat(
  1010.                 [in] BOOL keep
  1011.             );
  1012.  
  1013.     HRESULT PictureChanged(
  1014.                 void
  1015.             );
  1016.  
  1017.     HRESULT SaveAsFile(
  1018.                 [in] LPSTREAM pStream,
  1019.                 [in] BOOL fSaveMemCopy,
  1020.                 [out] LONG * pCbSize
  1021.             );
  1022.  
  1023.     HRESULT get_Attributes(
  1024.                 [out] DWORD * pDwAttr
  1025.             );
  1026. }
  1027.  
  1028. [
  1029.     object,
  1030.     uuid(4EF6100A-AF88-11D0-9846-00C04FC29993),
  1031.     pointer_default(unique)
  1032. ]
  1033.  
  1034. interface IFontEventsDisp : IDispatch
  1035. {
  1036.     typedef FontEvents * LPFONTEVENTS;
  1037. }
  1038.  
  1039. [
  1040.     object,
  1041.     uuid(BEF6E003-A874-101A-8BBA-00AA00300CAB),
  1042.     pointer_default(unique)
  1043. ]
  1044.  
  1045. interface IFontDisp : IDispatch
  1046. {
  1047.     typedef IFontDisp * LPFONTDISP;
  1048. }
  1049.  
  1050.  
  1051. [
  1052.     object,
  1053.     uuid(7BF80981-BF32-101A-8BBB-00AA00300CAB),
  1054.     pointer_default(unique)
  1055. ]
  1056.  
  1057. interface IPictureDisp : IDispatch
  1058. {
  1059.     typedef IPictureDisp * LPPICTUREDISP;
  1060. }
  1061.  
  1062.  
  1063. //+---------------------------------------------------------------------------
  1064. //
  1065. //  Extensions to OLE and OLE Controls.
  1066. //
  1067. //----------------------------------------------------------------------------
  1068.  
  1069.  
  1070. [
  1071.     local,
  1072.     object,
  1073.     pointer_default(unique),
  1074.     uuid(1C2056CC-5EF4-101B-8BC8-00AA003E3B29)
  1075. ]
  1076.  
  1077. interface IOleInPlaceObjectWindowless : IOleInPlaceObject
  1078. {
  1079.     typedef IOleInPlaceObjectWindowless *LPOLEINPLACEOBJECTWINDOWLESS;
  1080.  
  1081.     HRESULT OnWindowMessage(
  1082.                 [in] UINT msg,
  1083.                 [in] WPARAM wParam,
  1084.                 [in] LPARAM lParam,
  1085.                 [out] LRESULT * plResult
  1086.             );
  1087.  
  1088.     HRESULT GetDropTarget(
  1089.                 [out] IDropTarget ** ppDropTarget
  1090.             );
  1091. }
  1092.  
  1093.  
  1094. [
  1095.     object,
  1096.     pointer_default(unique),
  1097.     uuid(9C2CAD80-3424-11CF-B670-00AA004CD6D8)
  1098. ]
  1099.  
  1100. interface IOleInPlaceSiteEx : IOleInPlaceSite
  1101. {
  1102.     typedef IOleInPlaceSiteEx * LPOLEINPLACESITEEX;
  1103.  
  1104.     typedef [v1_enum] enum tagACTIVATEFLAGS {
  1105.         ACTIVATE_WINDOWLESS = 1,
  1106.     } ACTIVATEFLAGS;
  1107.  
  1108.     HRESULT OnInPlaceActivateEx(
  1109.                 [out] BOOL * pfNoRedraw,
  1110.                 [in] DWORD dwFlags
  1111.             );
  1112.  
  1113.     HRESULT OnInPlaceDeactivateEx(
  1114.                 [in] BOOL fNoRedraw
  1115.             );
  1116.  
  1117.     HRESULT RequestUIActivate(
  1118.                 void
  1119.             );
  1120. }
  1121.  
  1122.  
  1123. [
  1124.     local,
  1125.     object,
  1126.     pointer_default(unique),
  1127.     uuid(922EADA0-3424-11CF-B670-00AA004CD6D8)
  1128. ]
  1129.  
  1130. interface IOleInPlaceSiteWindowless : IOleInPlaceSiteEx
  1131. {
  1132.     typedef IOleInPlaceSiteWindowless * LPOLEINPLACESITEWINDOWLESS;
  1133.  
  1134.     typedef [v1_enum] enum tagOLEDCFLAGS {
  1135.         OLEDC_NODRAW     = 0x01,
  1136.         OLEDC_PAINTBKGND = 0x02,
  1137.         OLEDC_OFFSCREEN  = 0x04
  1138.     } OLEDCFLAGS;
  1139.  
  1140.     HRESULT CanWindowlessActivate(
  1141.                 void
  1142.             );
  1143.  
  1144.     HRESULT GetCapture(
  1145.                 void
  1146.             );
  1147.  
  1148.     HRESULT SetCapture(
  1149.                 [in] BOOL fCapture
  1150.             );
  1151.  
  1152.     HRESULT GetFocus(
  1153.                 void
  1154.             );
  1155.  
  1156.     HRESULT SetFocus(
  1157.                 [in] BOOL fFocus
  1158.             );
  1159.  
  1160.     HRESULT GetDC(
  1161.                 [in] LPCRECT pRect,
  1162.                 [in] DWORD grfFlags,
  1163.                 [out] HDC * phDC
  1164.             );
  1165.  
  1166.     HRESULT ReleaseDC(
  1167.                 [in] HDC hDC
  1168.             );
  1169.  
  1170.     HRESULT InvalidateRect(
  1171.                 [in] LPCRECT pRect,
  1172.                 [in] BOOL fErase
  1173.             );
  1174.  
  1175.     HRESULT InvalidateRgn(
  1176.                 [in] HRGN hRGN,
  1177.                 [in] BOOL fErase
  1178.             );
  1179.  
  1180.     HRESULT ScrollRect(
  1181.                 [in] INT dx,
  1182.                 [in] INT dy,
  1183.                 [in] LPCRECT pRectScroll,
  1184.                 [in] LPCRECT pRectClip
  1185.             );
  1186.  
  1187.     HRESULT AdjustRect(
  1188.                 [in, out] LPRECT prc
  1189.             );
  1190.  
  1191.     HRESULT OnDefWindowMessage(
  1192.                 [in] UINT msg,
  1193.                 [in] WPARAM wParam,
  1194.                 [in] LPARAM lParam,
  1195.                 [out] LRESULT * plResult
  1196.             );
  1197. }
  1198.  
  1199.  
  1200. [
  1201.     local,
  1202.     object,
  1203.     pointer_default(unique),
  1204.     uuid(3AF24292-0C96-11CE-A0CF-00AA00600AB8)
  1205. ]
  1206.  
  1207. interface IViewObjectEx : IViewObject2
  1208. {
  1209.     typedef IViewObjectEx * LPVIEWOBJECTEX;
  1210.  
  1211.     typedef [v1_enum] enum tagVIEWSTATUS {
  1212.         VIEWSTATUS_OPAQUE               = 1,
  1213.         VIEWSTATUS_SOLIDBKGND           = 2,
  1214.         VIEWSTATUS_DVASPECTOPAQUE       = 4,
  1215.         VIEWSTATUS_DVASPECTTRANSPARENT  = 8,
  1216.         VIEWSTATUS_SURFACE              = 16,
  1217.         VIEWSTATUS_3DSURFACE            = 32
  1218.     } VIEWSTATUS;
  1219.  
  1220.     typedef [v1_enum] enum tagHITRESULT {
  1221.         HITRESULT_OUTSIDE       = 0,
  1222.         HITRESULT_TRANSPARENT   = 1,
  1223.         HITRESULT_CLOSE         = 2,
  1224.         HITRESULT_HIT           = 3
  1225.     } HITRESULT;
  1226.  
  1227.     typedef [v1_enum] enum tagDVASPECT2 {
  1228.         DVASPECT_OPAQUE         = 16,
  1229.         DVASPECT_TRANSPARENT    = 32,
  1230.     } DVASPECT2;
  1231.  
  1232.     typedef struct tagExtentInfo {
  1233.         ULONG   cb;
  1234.         DWORD   dwExtentMode;
  1235.         SIZEL   sizelProposed;
  1236.     } DVEXTENTINFO;
  1237.  
  1238.     typedef [v1_enum] enum tagExtentMode {
  1239.         DVEXTENT_CONTENT,
  1240.         DVEXTENT_INTEGRAL
  1241.     } DVEXTENTMODE;
  1242.  
  1243.     typedef [v1_enum] enum tagAspectInfoFlag {
  1244.         DVASPECTINFOFLAG_CANOPTIMIZE = 1
  1245.     } DVASPECTINFOFLAG;
  1246.  
  1247.     typedef struct tagAspectInfo {
  1248.         ULONG   cb;
  1249.         DWORD   dwFlags;
  1250.     } DVASPECTINFO;
  1251.  
  1252.     HRESULT GetRect(
  1253.                 [in] DWORD dwAspect,
  1254.                 [out] LPRECTL pRect
  1255.             );
  1256.  
  1257.     HRESULT GetViewStatus(
  1258.                 [out] DWORD * pdwStatus
  1259.             );
  1260.  
  1261.     HRESULT QueryHitPoint(
  1262.                 [in] DWORD dwAspect,
  1263.                 [in] LPCRECT pRectBounds,
  1264.                 [in] POINT ptlLoc,
  1265.                 [in] LONG lCloseHint,
  1266.                 [out] DWORD * pHitResult
  1267.             );
  1268.  
  1269.     HRESULT QueryHitRect(
  1270.                 [in] DWORD dwAspect,
  1271.                 [in] LPCRECT pRectBounds,
  1272.                 [in] LPCRECT pRectLoc,
  1273.                 [in] LONG lCloseHint,
  1274.                 [out] DWORD * pHitResult
  1275.             );
  1276.  
  1277.     HRESULT GetNaturalExtent (
  1278.                 [in] DWORD dwAspect,
  1279.                 [in] LONG lindex,
  1280.                 [in] DVTARGETDEVICE * ptd,
  1281.                 [in] HDC hicTargetDev,
  1282.                 [in] DVEXTENTINFO * pExtentInfo,
  1283.                 [out] LPSIZEL pSizel
  1284.             );
  1285. }
  1286.  
  1287.  
  1288. [
  1289.     object,
  1290.     pointer_default(unique),
  1291.     uuid(894AD3B0-EF97-11CE-9BC9-00AA00608E01)
  1292. ]
  1293.  
  1294. interface IOleUndoUnit : IUnknown
  1295. {
  1296.     typedef IOleUndoUnit * LPOLEUNDOUNIT;
  1297.  
  1298.     HRESULT Do(
  1299.                 [in] IOleUndoManager * pUndoManager
  1300.             );
  1301.  
  1302.     HRESULT GetDescription(
  1303.                 [out] BSTR * pBstr
  1304.             );
  1305.  
  1306.     HRESULT GetUnitType(
  1307.                 [out] CLSID * pClsid,
  1308.                 [out] LONG * plID
  1309.             );
  1310.  
  1311.     HRESULT OnNextAdd(
  1312.                 void
  1313.             );
  1314. }
  1315.  
  1316.  
  1317. [
  1318.     object,
  1319.     pointer_default(unique),
  1320.     uuid(A1FAF330-EF97-11CE-9BC9-00AA00608E01)
  1321. ]
  1322.  
  1323. interface IOleParentUndoUnit : IOleUndoUnit
  1324. {
  1325.     typedef IOleParentUndoUnit * LPOLEPARENTUNDOUNIT;
  1326.  
  1327.     HRESULT Open(
  1328.                 [in] IOleParentUndoUnit * pPUU
  1329.             );
  1330.  
  1331.     HRESULT Close(
  1332.                 [in] IOleParentUndoUnit * pPUU,
  1333.                 [in] BOOL fCommit
  1334.             );
  1335.  
  1336.     HRESULT Add(
  1337.                 [in] IOleUndoUnit * pUU
  1338.             );
  1339.  
  1340.     HRESULT FindUnit(
  1341.                 [in] IOleUndoUnit * pUU
  1342.             );
  1343.  
  1344.     HRESULT GetParentState(
  1345.                 [out] DWORD * pdwState
  1346.             );
  1347. }
  1348.  
  1349.  
  1350. [
  1351.     object,
  1352.     pointer_default(unique),
  1353.     uuid(B3E7C340-EF97-11CE-9BC9-00AA00608E01)
  1354. ]
  1355.  
  1356. interface IEnumOleUndoUnits : IUnknown
  1357. {
  1358.     typedef IEnumOleUndoUnits * LPENUMOLEUNDOUNITS;
  1359.  
  1360.     [local]
  1361.     HRESULT Next(
  1362.                 [in] ULONG cElt,
  1363.                 [out, size_is(cElt), length_is(*pcEltFetched)]
  1364.                       IOleUndoUnit ** rgElt,
  1365.                 [out] ULONG * pcEltFetched
  1366.             );
  1367.  
  1368.     [call_as(Next)]
  1369.     HRESULT RemoteNext(
  1370.                 [in] ULONG cElt,
  1371.                 [out, size_is(cElt), length_is(*pcEltFetched)]
  1372.                       IOleUndoUnit ** rgElt,
  1373.                 [out] ULONG * pcEltFetched
  1374.             );
  1375.  
  1376.     HRESULT Skip(
  1377.                 [in] ULONG cElt
  1378.             );
  1379.  
  1380.     HRESULT Reset(
  1381.                 void
  1382.             );
  1383.  
  1384.     HRESULT Clone(
  1385.                 [out] IEnumOleUndoUnits ** ppEnum
  1386.             );
  1387. }
  1388.  
  1389.  
  1390. [
  1391.     object,
  1392.     pointer_default(unique),
  1393.     uuid(D001F200-EF97-11CE-9BC9-00AA00608E01)
  1394. ]
  1395.  
  1396. interface IOleUndoManager : IUnknown
  1397. {
  1398. cpp_quote("#define SID_SOleUndoManager IID_IOleUndoManager")
  1399.  
  1400.     typedef IOleUndoManager * LPOLEUNDOMANAGER;
  1401.  
  1402.     HRESULT Open(
  1403.                 [in] IOleParentUndoUnit * pPUU
  1404.             );
  1405.  
  1406.     HRESULT Close(
  1407.                 [in] IOleParentUndoUnit * pPUU,
  1408.                 [in] BOOL fCommit   
  1409.             );
  1410.  
  1411.     HRESULT Add(
  1412.                 [in] IOleUndoUnit * pUU
  1413.             );
  1414.  
  1415.     HRESULT GetOpenParentState(
  1416.                 [out] DWORD * pdwState
  1417.             );
  1418.  
  1419.     HRESULT DiscardFrom(
  1420.                 [in] IOleUndoUnit * pUU
  1421.             );
  1422.  
  1423.     HRESULT UndoTo(
  1424.                 [in] IOleUndoUnit * pUU
  1425.             );
  1426.  
  1427.     HRESULT RedoTo(
  1428.                 [in] IOleUndoUnit * pUU
  1429.             );
  1430.  
  1431.     HRESULT EnumUndoable(
  1432.                 [out] IEnumOleUndoUnits ** ppEnum
  1433.             );
  1434.  
  1435.     HRESULT EnumRedoable(
  1436.                 [out] IEnumOleUndoUnits ** ppEnum
  1437.             );
  1438.  
  1439.     HRESULT GetLastUndoDescription(
  1440.                 [out] BSTR * pBstr
  1441.             );
  1442.  
  1443.     HRESULT GetLastRedoDescription(
  1444.                 [out] BSTR * pBstr
  1445.             );
  1446.  
  1447.     HRESULT Enable(
  1448.                 [in] BOOL fEnable
  1449.             );
  1450. }
  1451.  
  1452.  
  1453. [
  1454.     object,
  1455.     pointer_default(unique),
  1456.     uuid(55980BA0-35AA-11CF-B671-00AA004CD6D8)
  1457. ]
  1458.  
  1459. interface IPointerInactive : IUnknown
  1460. {
  1461.     typedef IPointerInactive * LPPOINTERINACTIVE;
  1462.  
  1463.     typedef [v1_enum] enum tagPOINTERINACTIVE {
  1464.         POINTERINACTIVE_ACTIVATEONENTRY   = 1,
  1465.         POINTERINACTIVE_DEACTIVATEONLEAVE = 2,
  1466.         POINTERINACTIVE_ACTIVATEONDRAG    = 4
  1467.     } POINTERINACTIVE;
  1468.  
  1469.     HRESULT GetActivationPolicy(
  1470.                 [out] DWORD * pdwPolicy
  1471.             );
  1472.  
  1473.     HRESULT OnInactiveMouseMove(
  1474.                 [in] LPCRECT pRectBounds,
  1475.                 [in] LONG x,
  1476.                 [in] LONG y,
  1477.                 [in] DWORD grfKeyState
  1478.             );
  1479.  
  1480.     HRESULT OnInactiveSetCursor(
  1481.                 [in] LPCRECT pRectBounds,
  1482.                 [in] LONG x,
  1483.                 [in] LONG y,
  1484.                 [in] DWORD dwMouseMsg,
  1485.                 [in] BOOL fSetAlways
  1486.             );
  1487. }
  1488.  
  1489.  
  1490. [
  1491.     object,
  1492.     uuid(FC4801A3-2BA9-11CF-A229-00AA003D7352),
  1493.     pointer_default(unique)
  1494. ]
  1495.  
  1496. interface IObjectWithSite : IUnknown
  1497. {
  1498.     typedef IObjectWithSite * LPOBJECTWITHSITE;
  1499.  
  1500.     HRESULT SetSite(
  1501.                 [in] IUnknown * pUnkSite
  1502.             );
  1503.  
  1504.     HRESULT GetSite(
  1505.                 [in] REFIID riid,
  1506.                 [out, iid_is(riid)] void ** ppvSite
  1507.             );
  1508. }
  1509.  
  1510. #endif // #if !defined(_DCOM_OA_REMOTING_) && !defined(_DCOM_OC_REMOTING_)
  1511.  
  1512. #if !defined(_DCOM_OC_REMOTING_)
  1513.  
  1514.  
  1515. [
  1516.     object,
  1517.     uuid(3127CA40-446E-11CE-8135-00AA004BB851),
  1518.     pointer_default(unique)
  1519. ]
  1520.  
  1521. interface IErrorLog : IUnknown
  1522. {
  1523.     typedef IErrorLog * LPERRORLOG;
  1524.  
  1525.     HRESULT AddError(
  1526.                 [in] LPCOLESTR pszPropName,
  1527.                 [in] EXCEPINFO * pExcepInfo
  1528.             );
  1529. }
  1530.  
  1531.  
  1532. [
  1533.     object,
  1534.     uuid(55272A00-42CB-11CE-8135-00AA004BB851),
  1535.     pointer_default(unique)
  1536. ]
  1537.  
  1538. interface IPropertyBag : IUnknown
  1539. {
  1540.     typedef IPropertyBag * LPPROPERTYBAG;
  1541.  
  1542.     [local]
  1543.     HRESULT Read(
  1544.                 [in] LPCOLESTR pszPropName,
  1545.                 [in, out] VARIANT * pVar,
  1546.                 [in] IErrorLog * pErrorLog
  1547.             );
  1548.  
  1549.     [call_as(Read)]
  1550.     HRESULT RemoteRead(
  1551.                 [in] LPCOLESTR pszPropName,
  1552.                 [out] VARIANT * pVar,
  1553.                 [in] IErrorLog * pErrorLog,
  1554.                 [in] DWORD varType,
  1555.                 [in] IUnknown * pUnkObj
  1556.             );
  1557.  
  1558.     HRESULT Write(
  1559.                 [in] LPCOLESTR pszPropName,
  1560.                 [in] VARIANT * pVar
  1561.             );
  1562. }
  1563.  
  1564.  
  1565. [
  1566.     object,
  1567.     uuid(376BD3AA-3845-101B-84ED-08002B2EC713),
  1568.     pointer_default(unique)
  1569. ]
  1570.  
  1571. interface IPerPropertyBrowsing : IUnknown
  1572. {
  1573.     typedef IPerPropertyBrowsing * LPPERPROPERTYBROWSING;
  1574.  
  1575.     typedef struct tagCALPOLESTR {
  1576.         ULONG cElems;
  1577.         [size_is(cElems)] LPOLESTR * pElems;
  1578.     } CALPOLESTR;
  1579.  
  1580.     typedef struct tagCALPOLESTR * LPCALPOLESTR;
  1581.  
  1582.     typedef struct tagCADWORD {
  1583.         ULONG cElems;
  1584.         [size_is(cElems)] DWORD * pElems;
  1585.     } CADWORD;
  1586.  
  1587.     typedef struct tagCADWORD * LPCADWORD;
  1588.  
  1589.     HRESULT GetDisplayString(
  1590.                 [in] DISPID dispID,
  1591.                 [out] BSTR * pBstr
  1592.             );
  1593.  
  1594.     HRESULT MapPropertyToPage(
  1595.                 [in] DISPID dispID,
  1596.                 [out] CLSID * pClsid
  1597.             );
  1598.  
  1599.     HRESULT GetPredefinedStrings(
  1600.                 [in] DISPID dispID,
  1601.                 [out] CALPOLESTR * pCaStringsOut,
  1602.                 [out] CADWORD * pCaCookiesOut
  1603.             );
  1604.  
  1605.     HRESULT GetPredefinedValue(
  1606.                 [in] DISPID dispID,
  1607.                 [in] DWORD dwCookie,
  1608.                 [out] VARIANT * pVarOut
  1609.             );
  1610. }
  1611.  
  1612. #endif // #if !defined(_DCOM_OC_REMOTING_)
  1613.  
  1614. #if !defined(_NON_DCOM_REMOTING_) && !defined(_DCOM_OC_REMOTING_)
  1615.  
  1616.  
  1617. [
  1618.     object,
  1619.     uuid(22F55882-280B-11d0-A8A9-00A0C90C2004),
  1620.     pointer_default(unique)
  1621. ]
  1622.  
  1623. interface IPropertyBag2 : IUnknown
  1624. {
  1625.     typedef IPropertyBag2 * LPPROPERTYBAG2;
  1626.  
  1627.     typedef [v1_enum] enum tagPROPBAG2_TYPE {
  1628.         PROPBAG2_TYPE_UNDEFINED = 0,
  1629.         PROPBAG2_TYPE_DATA      = 1,    // Value is simple data
  1630.         PROPBAG2_TYPE_URL       = 2,    // Value is a URL reference
  1631.         PROPBAG2_TYPE_OBJECT    = 3,    // Value is an object
  1632.         PROPBAG2_TYPE_STREAM    = 4,    // Value is a stream
  1633.         PROPBAG2_TYPE_STORAGE   = 5,    // Value is a storage
  1634.         PROPBAG2_TYPE_MONIKER   = 6     // Value is a moniker
  1635.     } PROPBAG2_TYPE;
  1636.  
  1637.     typedef struct tagPROPBAG2 {
  1638.         DWORD       dwType;             // Property type (from PROPBAG2_TYPE)
  1639.         VARTYPE     vt;                 // VARIANT property type
  1640.         CLIPFORMAT  cfType;             // Clipboard format (aka MIME-type)
  1641.         DWORD       dwHint;             // Property name hint
  1642.         LPOLESTR    pstrName;           // Property name
  1643.         CLSID       clsid;              // CLSID (for PROPBAG2_TYPE_OBJECT)
  1644.     } PROPBAG2;
  1645.  
  1646.     HRESULT Read(
  1647.                 [in] ULONG cProperties,
  1648.                 [in] PROPBAG2 * pPropBag,
  1649.                 [in] IErrorLog * pErrLog,
  1650.                 [out] VARIANT * pvarValue,
  1651.                 [out] HRESULT * phrError
  1652.             );
  1653.  
  1654.     HRESULT Write(
  1655.                 [in] ULONG cProperties,
  1656.                 [in] PROPBAG2 * pPropBag,
  1657.                 [in] VARIANT * pvarValue
  1658.             );
  1659.  
  1660.     HRESULT CountProperties(
  1661.                 [out] ULONG * pcProperties
  1662.             );
  1663.  
  1664.     HRESULT GetPropertyInfo(
  1665.                 [in] ULONG iProperty,
  1666.                 [in] ULONG cProperties,
  1667.                 [out] PROPBAG2 * pPropBag,
  1668.                 [out] ULONG * pcProperties
  1669.             );
  1670.  
  1671.     HRESULT LoadObject(
  1672.                 [in] LPCOLESTR pstrName,
  1673.                 [in] DWORD dwHint,
  1674.                 [in] IUnknown * pUnkObject,
  1675.                 [in] IErrorLog * pErrLog
  1676.             );
  1677. }
  1678.  
  1679.  
  1680. [
  1681.     object,
  1682.     uuid(22F55881-280B-11d0-A8A9-00A0C90C2004),
  1683.     pointer_default(unique)
  1684. ]
  1685.  
  1686. interface IPersistPropertyBag2 : IPersist
  1687. {
  1688.     typedef IPersistPropertyBag2 * LPPERSISTPROPERTYBAG2;
  1689.  
  1690.     HRESULT InitNew(
  1691.                 void
  1692.             );
  1693.  
  1694.     HRESULT Load(
  1695.                 [in] IPropertyBag2 * pPropBag,
  1696.                 [in] IErrorLog * pErrLog
  1697.             );
  1698.  
  1699.     HRESULT Save(
  1700.                 [in] IPropertyBag2 * pPropBag,
  1701.                 [in] BOOL fClearDirty,
  1702.                 [in] BOOL fSaveAllProperties
  1703.             );
  1704.  
  1705.     HRESULT IsDirty(
  1706.                 void
  1707.             );
  1708. }
  1709.  
  1710. #endif // #if !defined(_NON_DCOM_REMOTING_) && !defined(_DCOM_OC_REMOTING_)
  1711.  
  1712. #if !defined(_NON_DCOM_REMOTING_) && !defined(_DCOM_OA_REMOTING_)
  1713.  
  1714. #if !defined(_DCOM_OC_REMOTING_)
  1715.  
  1716. [
  1717.     object,
  1718.     pointer_default(unique),
  1719.     uuid(3AF24290-0C96-11CE-A0CF-00AA00600AB8)
  1720. ]
  1721.  
  1722. interface IAdviseSinkEx : IAdviseSink
  1723. {
  1724.     typedef IAdviseSinkEx * LPADVISESINKEX;
  1725.  
  1726.     [local]
  1727.     void OnViewStatusChange(
  1728.                 [in] DWORD dwViewStatus
  1729.             );
  1730.  
  1731.     [call_as(OnViewStatusChange)]
  1732.     HRESULT RemoteOnViewStatusChange(
  1733.                 [in] DWORD dwViewStatus
  1734.             );
  1735. }
  1736.  
  1737. #endif // #if !defined(_DCOM_OC_REMOTING_)
  1738.  
  1739. [
  1740.     object,
  1741.     pointer_default(unique),
  1742.     uuid(CF51ED10-62FE-11CF-BF86-00A0C9034836)
  1743. ]
  1744.  
  1745. interface IQuickActivate : IUnknown
  1746. {
  1747.     typedef IQuickActivate * LPQUICKACTIVATE;
  1748.  
  1749.     typedef [v1_enum] enum tagQACONTAINERFLAGS {
  1750.         QACONTAINER_SHOWHATCHING      = 0x0001,
  1751.         QACONTAINER_SHOWGRABHANDLES   = 0x0002,
  1752.         QACONTAINER_USERMODE          = 0x0004,
  1753.         QACONTAINER_DISPLAYASDEFAULT  = 0x0008,
  1754.         QACONTAINER_UIDEAD            = 0x0010,
  1755.         QACONTAINER_AUTOCLIP          = 0x0020,
  1756.         QACONTAINER_MESSAGEREFLECT    = 0x0040,
  1757.         QACONTAINER_SUPPORTSMNEMONICS = 0x0080
  1758.     } QACONTAINERFLAGS;
  1759.     
  1760.     typedef [uuid(66504301-BE0F-101A-8BBB-00AA00300CAB), public] DWORD OLE_COLOR;    
  1761.     
  1762.     typedef struct tagQACONTAINER {
  1763.         ULONG                   cbSize;
  1764.         IOleClientSite *        pClientSite;
  1765.         IAdviseSinkEx *         pAdviseSink;
  1766.         IPropertyNotifySink *   pPropertyNotifySink;
  1767.         IUnknown *              pUnkEventSink;
  1768.         DWORD                   dwAmbientFlags;
  1769.         OLE_COLOR               colorFore;
  1770.         OLE_COLOR               colorBack;
  1771.         IFont *                 pFont;
  1772.         IOleUndoManager *       pUndoMgr;
  1773.         DWORD                   dwAppearance;
  1774.         LONG                    lcid;
  1775.         HPALETTE                hpal;
  1776.         IBindHost *             pBindHost;
  1777.         IOleControlSite *       pOleControlSite;
  1778.         IServiceProvider *      pServiceProvider;
  1779.     } QACONTAINER;
  1780.     
  1781.     typedef struct tagQACONTROL {
  1782.         ULONG   cbSize;
  1783.         DWORD   dwMiscStatus;
  1784.         DWORD   dwViewStatus;
  1785.         DWORD   dwEventCookie;
  1786.         DWORD   dwPropNotifyCookie;
  1787.         DWORD   dwPointerActivationPolicy;
  1788.     } QACONTROL;
  1789.  
  1790.     [local]
  1791.     HRESULT QuickActivate(
  1792.                 [in] QACONTAINER * pQaContainer,
  1793.                 [in,out] QACONTROL * pQaControl
  1794.             );
  1795.  
  1796.     [call_as(QuickActivate)]
  1797.     HRESULT RemoteQuickActivate(
  1798.                 [in] QACONTAINER * pQaContainer,
  1799.                 [out] QACONTROL * pQaControl
  1800.             );
  1801.  
  1802.     HRESULT SetContentExtent(
  1803.                 [in] LPSIZEL pSizel
  1804.             );
  1805.  
  1806.     HRESULT GetContentExtent(
  1807.                 [out] LPSIZEL pSizel
  1808.             );
  1809. }
  1810.  
  1811. #endif // #if !defined(_NON_DCOM_REMOTING_) && !defined(_DCOM_OA_REMOTING_)
  1812.  
  1813.