OCIdl.Idl
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:41k
源码类别:

模拟服务器

开发平台:

C/C++

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