home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / Compilers / digital marsC compier / dm / include / win32 / Ocidl.idl < prev    next >
Encoding:
Text File  |  1996-08-14  |  36.4 KB  |  1,639 lines

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