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

  1. //+-------------------------------------------------------------------------
  2. //
  3. //  Microsoft Windows
  4. //  Copyright (C) Microsoft Corporation, 1992-1997.
  5. //
  6. //  File: oadvhr.idl
  7. //
  8. //--------------------------------------------------------------------------
  9.  
  10. cpp_quote("//+-------------------------------------------------------------------------")
  11. cpp_quote("//")
  12. cpp_quote("//  Microsoft Windows")
  13. cpp_quote("//  Copyright (C) Microsoft Corporation, 1992-1997.")
  14. cpp_quote("//")
  15. cpp_quote("//--------------------------------------------------------------------------")
  16.  
  17. #ifndef DO_NO_IMPORTS
  18. import "objidl.idl";
  19. #endif
  20.  
  21. interface IOleInPlaceActiveObject;
  22. interface IEnumOLEVERB;
  23.  
  24. [
  25.     local,
  26.     object,
  27.     uuid(00000111-0000-0000-C000-000000000046)
  28. ]
  29.  
  30. interface IOleAdviseHolder : IUnknown
  31. {
  32.  
  33.     typedef [unique] IOleAdviseHolder * LPOLEADVISEHOLDER;
  34.  
  35.     HRESULT Advise
  36.     (
  37.         [in, unique] IAdviseSink *pAdvise,
  38.         [out] DWORD *pdwConnection
  39.     );
  40.  
  41.     HRESULT Unadvise
  42.     (
  43.         [in] DWORD dwConnection
  44.     );
  45.  
  46.     HRESULT EnumAdvise
  47.     (
  48.         [out] IEnumSTATDATA **ppenumAdvise
  49.     );
  50.  
  51.     HRESULT SendOnRename
  52.     (
  53.         [in, unique] IMoniker *pmk
  54.     );
  55.  
  56.     HRESULT SendOnSave
  57.     (
  58.         void
  59.     );
  60.  
  61.     HRESULT SendOnClose
  62.     (
  63.         void
  64.     );
  65.  
  66. }
  67.  
  68. [
  69.     object,
  70.     uuid(0000011e-0000-0000-C000-000000000046),
  71.     pointer_default(unique)
  72. ]
  73.  
  74. interface IOleCache : IUnknown
  75. {
  76.  
  77.     typedef [unique] IOleCache *LPOLECACHE;
  78.  
  79.     HRESULT Cache
  80.     (
  81.         [in, unique] FORMATETC *pformatetc,
  82.         [in] DWORD advf,
  83.         [out] DWORD *pdwConnection
  84.     );
  85.  
  86.     HRESULT Uncache
  87.     (
  88.         [in] DWORD dwConnection
  89.     );
  90.  
  91.     HRESULT EnumCache
  92.     (
  93.         [out] IEnumSTATDATA **ppenumSTATDATA
  94.     );
  95.  
  96.     HRESULT InitCache
  97.     (
  98.         [in, unique] IDataObject *pDataObject
  99.     );
  100.  
  101.     HRESULT SetData
  102.     (
  103.         [in, unique] FORMATETC *pformatetc,
  104.         [in, unique] STGMEDIUM *pmedium,
  105.         [in] BOOL fRelease
  106.     );
  107.  
  108. }
  109.  
  110. [
  111.     object,
  112.     uuid(00000128-0000-0000-C000-000000000046),
  113.     pointer_default(unique)
  114. ]
  115.  
  116. interface IOleCache2 : IOleCache
  117. {
  118.  
  119.     typedef [unique] IOleCache2 *LPOLECACHE2;
  120.  
  121.  
  122.     // Cache update Flags
  123.  
  124.     const DWORD UPDFCACHE_NODATACACHE   =       0x00000001;
  125.     const DWORD UPDFCACHE_ONSAVECACHE   =       0x00000002;
  126.     const DWORD UPDFCACHE_ONSTOPCACHE   =       0x00000004;
  127.     const DWORD UPDFCACHE_NORMALCACHE   =       0x00000008;
  128.     const DWORD UPDFCACHE_IFBLANK       =       0x00000010;
  129.     const DWORD UPDFCACHE_ONLYIFBLANK   =       0x80000000;
  130.  
  131.     const DWORD UPDFCACHE_IFBLANKORONSAVECACHE  =
  132.                     (UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE);
  133.     const DWORD UPDFCACHE_ALL                   =
  134.                     ((DWORD)(~(UPDFCACHE_ONLYIFBLANK)));
  135.     const DWORD UPDFCACHE_ALLBUTNODATACACHE     =
  136.                     (UPDFCACHE_ALL & ((DWORD)(~UPDFCACHE_NODATACACHE)));
  137.  
  138.  
  139.     // IOleCache2::DiscardCache options
  140.     typedef [v1_enum] enum tagDISCARDCACHE
  141.     {
  142.         DISCARDCACHE_SAVEIFDIRTY =  0,  // Save all dirty cache before discarding
  143.         DISCARDCACHE_NOSAVE      =  1   // Don't save dirty caches before
  144.                                     // discarding
  145.     } DISCARDCACHE;
  146.  
  147.  
  148.     [local]
  149.     HRESULT UpdateCache
  150.     (
  151.         [in] LPDATAOBJECT pDataObject,
  152.         [in] DWORD grfUpdf,
  153.         [in] LPVOID pReserved
  154.     );
  155.  
  156.     [call_as(UpdateCache)]
  157.     HRESULT RemoteUpdateCache
  158.     (
  159.         [in] LPDATAOBJECT pDataObject,
  160.         [in] DWORD grfUpdf,
  161.         [in] DWORD pReserved
  162.     );
  163.  
  164.  
  165.     HRESULT DiscardCache
  166.     (
  167.         [in] DWORD dwDiscardOptions
  168.     );
  169.  
  170. }
  171.  
  172. [
  173.     object,
  174.     uuid(00000129-0000-0000-C000-000000000046)
  175. ]
  176.  
  177. interface IOleCacheControl : IUnknown
  178. {
  179.  
  180.     typedef [unique] IOleCacheControl *LPOLECACHECONTROL;
  181.  
  182.  
  183.     HRESULT OnRun
  184.     (
  185.         LPDATAOBJECT pDataObject
  186.     );
  187.  
  188.     HRESULT OnStop (void);
  189.  
  190.  
  191. }
  192.  
  193. [
  194.     object,
  195.     uuid(0000011a-0000-0000-C000-000000000046),
  196.     pointer_default(unique)
  197. ]
  198.  
  199. interface IParseDisplayName : IUnknown
  200. {
  201.  
  202.     typedef [unique] IParseDisplayName *LPPARSEDISPLAYNAME;
  203.  
  204.     HRESULT ParseDisplayName
  205.     (
  206.         [in, unique] IBindCtx *pbc,
  207.         [in] LPOLESTR pszDisplayName,
  208.         [out] ULONG *pchEaten,
  209.         [out] IMoniker **ppmkOut
  210.     );
  211.  
  212. }
  213.  
  214. [
  215.     object,
  216.     uuid(0000011b-0000-0000-C000-000000000046),
  217.     pointer_default(unique)
  218. ]
  219.  
  220. interface IOleContainer : IParseDisplayName
  221. {
  222.  
  223.     typedef [unique] IOleContainer *LPOLECONTAINER;
  224.  
  225.     HRESULT EnumObjects
  226.     (
  227.         [in] DWORD grfFlags,
  228.         [out] IEnumUnknown **ppenum
  229.     );
  230.  
  231.     HRESULT LockContainer
  232.     (
  233.         [in] BOOL fLock
  234.     );
  235. }
  236.  
  237. [
  238.     object,
  239.     uuid(00000118-0000-0000-C000-000000000046),
  240.     pointer_default(unique)
  241. ]
  242.  
  243. interface IOleClientSite : IUnknown
  244. {
  245.  
  246.     typedef [unique] IOleClientSite * LPOLECLIENTSITE;
  247.  
  248.     HRESULT SaveObject
  249.     (
  250.         void
  251.     );
  252.  
  253.     HRESULT GetMoniker
  254.     (
  255.         [in] DWORD dwAssign,
  256.         [in] DWORD dwWhichMoniker,
  257.         [out] IMoniker **ppmk
  258.     );
  259.  
  260.     HRESULT GetContainer
  261.     (
  262.         [out] IOleContainer **ppContainer
  263.     );
  264.  
  265.     HRESULT ShowObject
  266.     (
  267.         void
  268.     );
  269.  
  270.     HRESULT OnShowWindow
  271.     (
  272.         [in] BOOL fShow
  273.     );
  274.  
  275.     HRESULT RequestNewObjectLayout
  276.     (
  277.         void
  278.     );
  279.  
  280. }
  281.  
  282. [
  283.     object,
  284.     uuid(00000112-0000-0000-C000-000000000046),
  285.     pointer_default(unique)
  286. ]
  287.  
  288. interface IOleObject : IUnknown
  289. {
  290.  
  291.     typedef [unique] IOleObject *LPOLEOBJECT;
  292.  
  293.     typedef enum tagOLEGETMONIKER
  294.     {
  295.         OLEGETMONIKER_ONLYIFTHERE = 1,
  296.         OLEGETMONIKER_FORCEASSIGN = 2,
  297.         OLEGETMONIKER_UNASSIGN    = 3,
  298.         OLEGETMONIKER_TEMPFORUSER = 4
  299.     } OLEGETMONIKER;
  300.  
  301.     typedef enum tagOLEWHICHMK
  302.     {
  303.         OLEWHICHMK_CONTAINER = 1,
  304.         OLEWHICHMK_OBJREL    = 2,
  305.         OLEWHICHMK_OBJFULL   = 3
  306.     } OLEWHICHMK;
  307.  
  308.     typedef enum tagUSERCLASSTYPE
  309.     {
  310.         USERCLASSTYPE_FULL    = 1,
  311.         USERCLASSTYPE_SHORT   = 2,
  312.         USERCLASSTYPE_APPNAME = 3,
  313.     } USERCLASSTYPE;
  314.  
  315.     typedef enum tagOLEMISC
  316.     {
  317.         OLEMISC_RECOMPOSEONRESIZE           = 0x00000001,
  318.         OLEMISC_ONLYICONIC                  = 0x00000002,
  319.         OLEMISC_INSERTNOTREPLACE            = 0x00000004,
  320.         OLEMISC_STATIC                      = 0x00000008,
  321.         OLEMISC_CANTLINKINSIDE              = 0x00000010,
  322.         OLEMISC_CANLINKBYOLE1               = 0x00000020,
  323.         OLEMISC_ISLINKOBJECT                = 0x00000040,
  324.         OLEMISC_INSIDEOUT                   = 0x00000080,
  325.         OLEMISC_ACTIVATEWHENVISIBLE         = 0x00000100,
  326.         OLEMISC_RENDERINGISDEVICEINDEPENDENT= 0x00000200,
  327.         OLEMISC_INVISIBLEATRUNTIME          = 0x00000400,
  328.         OLEMISC_ALWAYSRUN                   = 0x00000800,
  329.         OLEMISC_ACTSLIKEBUTTON              = 0x00001000,
  330.         OLEMISC_ACTSLIKELABEL               = 0x00002000,
  331.         OLEMISC_NOUIACTIVATE                = 0x00004000,
  332.         OLEMISC_ALIGNABLE                   = 0x00008000,
  333.         OLEMISC_SIMPLEFRAME                 = 0x00010000,
  334.         OLEMISC_SETCLIENTSITEFIRST          = 0x00020000,
  335.         OLEMISC_IMEMODE                     = 0x00040000,
  336.         OLEMISC_IGNOREACTIVATEWHENVISIBLE   = 0x00080000,
  337.         OLEMISC_WANTSTOMENUMERGE            = 0x00100000,
  338.         OLEMISC_SUPPORTSMULTILEVELUNDO      = 0x00200000
  339.     } OLEMISC;
  340.  
  341.     typedef enum tagOLECLOSE
  342.     {
  343.         OLECLOSE_SAVEIFDIRTY = 0,
  344.         OLECLOSE_NOSAVE      = 1,
  345.         OLECLOSE_PROMPTSAVE  = 2
  346.     } OLECLOSE;
  347.  
  348. //IOleObject methods
  349.  
  350.     HRESULT SetClientSite
  351.     (
  352.         [in, unique] IOleClientSite *pClientSite
  353.     );
  354.  
  355.     HRESULT GetClientSite
  356.     (
  357.         [out] IOleClientSite **ppClientSite
  358.     );
  359.  
  360.     HRESULT SetHostNames
  361.     (
  362.         [in] LPCOLESTR szContainerApp,
  363.         [in, unique] LPCOLESTR szContainerObj
  364.     );
  365.  
  366.     HRESULT Close
  367.     (
  368.         [in] DWORD dwSaveOption
  369.     );
  370.  
  371.     HRESULT SetMoniker
  372.     (
  373.         [in] DWORD dwWhichMoniker,
  374.         [in, unique] IMoniker *pmk
  375.     );
  376.  
  377.     HRESULT GetMoniker
  378.     (
  379.         [in] DWORD dwAssign,
  380.         [in] DWORD dwWhichMoniker,
  381.         [out] IMoniker **ppmk
  382.     );
  383.  
  384.     HRESULT InitFromData
  385.     (
  386.         [in, unique] IDataObject *pDataObject,
  387.         [in] BOOL fCreation,
  388.         [in] DWORD dwReserved
  389.     );
  390.  
  391.     HRESULT GetClipboardData
  392.     (
  393.         [in] DWORD dwReserved,
  394.         [out] IDataObject **ppDataObject
  395.     );
  396.  
  397.     HRESULT DoVerb
  398.     (
  399.         [in] LONG iVerb,
  400.         [in, unique] LPMSG lpmsg,
  401.         [in, unique] IOleClientSite *pActiveSite,
  402.         [in] LONG lindex,
  403.         [in] HWND hwndParent,
  404.         [in, unique] LPCRECT lprcPosRect
  405.     );
  406.  
  407.     HRESULT EnumVerbs
  408.     (
  409.         [out] IEnumOLEVERB **ppEnumOleVerb
  410.     );
  411.  
  412.     HRESULT Update
  413.     (
  414.         void
  415.     );
  416.  
  417.     HRESULT IsUpToDate
  418.     (
  419.         void
  420.     );
  421.  
  422.     HRESULT GetUserClassID
  423.     (
  424.         [out] CLSID *pClsid
  425.     );
  426.  
  427.     HRESULT GetUserType
  428.     (
  429.         [in] DWORD dwFormOfType,
  430.         [out] LPOLESTR *pszUserType
  431.     );
  432.  
  433.     HRESULT SetExtent
  434.     (
  435.         [in] DWORD dwDrawAspect,
  436.         [in] SIZEL *psizel
  437.     );
  438.  
  439.     HRESULT GetExtent
  440.     (
  441.         [in] DWORD dwDrawAspect,
  442.         [out] SIZEL *psizel
  443.     );
  444.  
  445.     HRESULT Advise
  446.     (
  447.         [in, unique] IAdviseSink *pAdvSink,
  448.         [out] DWORD *pdwConnection
  449.     );
  450.  
  451.     HRESULT Unadvise
  452.     (
  453.         [in] DWORD dwConnection
  454.     );
  455.  
  456.     HRESULT EnumAdvise
  457.     (
  458.         [out] IEnumSTATDATA **ppenumAdvise
  459.     );
  460.  
  461.     HRESULT GetMiscStatus
  462.     (
  463.         [in] DWORD dwAspect,
  464.         [out] DWORD *pdwStatus
  465.     );
  466.  
  467.     HRESULT SetColorScheme
  468.     (
  469.         [in] LOGPALETTE *pLogpal
  470.     );
  471. }
  472.  
  473. [uuid(B0916C84-7416-101A-BCEA-08002B2B79EF)]
  474. interface IOLETypes
  475. {
  476.  
  477.     /****** OLE value types ***********************************************/
  478.  
  479.     /* rendering options */
  480.     typedef enum tagOLERENDER
  481.     {
  482.         OLERENDER_NONE   = 0,
  483.         OLERENDER_DRAW   = 1,
  484.         OLERENDER_FORMAT = 2,
  485.         OLERENDER_ASIS   = 3
  486.     } OLERENDER;
  487.     typedef  OLERENDER * LPOLERENDER;
  488.  
  489.  
  490.  
  491.     /****** Clipboard Data structures *****************************************/
  492.  
  493.     typedef struct tagOBJECTDESCRIPTOR
  494.     {
  495.        ULONG    cbSize;              // Size of structure in bytes
  496.        CLSID    clsid;               // CLSID of data being transferred
  497.        DWORD    dwDrawAspect;        // Display aspect of the object
  498.                                      //     normally DVASPECT_CONTENT or ICON.
  499.                                      //     dwDrawAspect will be 0 (which is NOT
  500.                                      //     DVASPECT_CONTENT) if the copier or
  501.                                      //     dragsource didn't draw the object to
  502.                                      //     begin with.
  503.        SIZEL    sizel;               // size of the object in HIMETRIC
  504.                                      //    sizel is opt.: will be (0,0) for apps
  505.                                      //    which don't draw the object being
  506.                                      //    transferred
  507.        POINTL   pointl;              // Offset in HIMETRIC units from the
  508.                                      //    upper-left corner of the obj where the
  509.                                      //    mouse went down for the drag.
  510.                                      //    NOTE: y coordinates increase downward.
  511.                                      //          x coordinates increase to right
  512.                                      //    pointl is opt.; it is only meaningful
  513.                                      //    if object is transfered via drag/drop.
  514.                                      //    (0, 0) if mouse position is unspecified
  515.                                      //    (eg. when obj transfered via clipboard)
  516.        DWORD    dwStatus;            // Misc. status flags for object. Flags are
  517.                                      //    defined by OLEMISC enum. these flags
  518.                                      //    are as would be returned
  519.                                      //    by IOleObject::GetMiscStatus.
  520.        DWORD    dwFullUserTypeName;  // Offset from beginning of structure to
  521.                                      //    null-terminated string that specifies
  522.                                      //    Full User Type Name of the object.
  523.                                      //    0 indicates string not present.
  524.        DWORD    dwSrcOfCopy;         // Offset from beginning of structure to
  525.                                      //    null-terminated string that specifies
  526.                                      //    source of the transfer.
  527.                                      //    dwSrcOfCOpy is normally implemented as
  528.                                      //    the display name of the temp-for-user
  529.                                      //    moniker which identifies the source of
  530.                                      //    the data.
  531.                                      //    0 indicates string not present.
  532.                                      //    NOTE: moniker assignment is NOT forced.
  533.                                      //    see IOleObject::GetMoniker(
  534.                                      //                OLEGETMONIKER_TEMPFORUSER)
  535.  
  536.      /* variable sized string data may appear here */
  537.  
  538.     } OBJECTDESCRIPTOR,  *POBJECTDESCRIPTOR,   *LPOBJECTDESCRIPTOR,
  539.       LINKSRCDESCRIPTOR, *PLINKSRCDESCRIPTOR,  *LPLINKSRCDESCRIPTOR;
  540.  
  541.  
  542.  
  543.  
  544. }
  545.  
  546. [
  547.     object,
  548.     uuid(00000114-0000-0000-C000-000000000046),
  549.     pointer_default(unique)
  550. ]
  551.  
  552. interface IOleWindow : IUnknown
  553. {
  554.  
  555.     typedef [unique] IOleWindow *LPOLEWINDOW;
  556.  
  557.     [input_sync]
  558.     HRESULT GetWindow
  559.     (
  560.         [out] HWND *phwnd
  561.     );
  562.  
  563.     HRESULT ContextSensitiveHelp
  564.     (
  565.         [in] BOOL fEnterMode
  566.     );
  567. }
  568.  
  569. [
  570.     object,
  571.     uuid(0000011d-0000-0000-C000-000000000046)
  572. ]
  573.  
  574. interface IOleLink : IUnknown
  575. {
  576.  
  577.     typedef [unique] IOleLink *LPOLELINK;
  578.  
  579.     /* Link update options */
  580.     typedef enum tagOLEUPDATE
  581.     {
  582.         OLEUPDATE_ALWAYS=1,
  583.         OLEUPDATE_ONCALL=3
  584.     } OLEUPDATE;
  585.     typedef OLEUPDATE *LPOLEUPDATE;
  586.  
  587.  
  588.     typedef  OLEUPDATE *POLEUPDATE;
  589.  
  590.     // for IOleLink::BindToSource
  591.     typedef enum tagOLELINKBIND
  592.     {
  593.         OLELINKBIND_EVENIFCLASSDIFF = 1,
  594.     } OLELINKBIND;
  595.  
  596.     HRESULT SetUpdateOptions
  597.     (
  598.         [in] DWORD dwUpdateOpt
  599.     );
  600.  
  601.     HRESULT GetUpdateOptions
  602.     (
  603.         [out] DWORD *pdwUpdateOpt
  604.     );
  605.  
  606.     HRESULT SetSourceMoniker
  607.     (
  608.         [in, unique] IMoniker *pmk,
  609.         [in] REFCLSID rclsid
  610.     );
  611.  
  612.     HRESULT GetSourceMoniker
  613.     (
  614.         [out] IMoniker **ppmk
  615.     );
  616.  
  617.     HRESULT SetSourceDisplayName
  618.     (
  619.         [in]LPCOLESTR pszStatusText
  620.     );
  621.  
  622.     HRESULT GetSourceDisplayName
  623.     (
  624.         [out] LPOLESTR *ppszDisplayName
  625.     );
  626.  
  627.     HRESULT BindToSource
  628.     (
  629.         [in] DWORD bindflags,
  630.         [in, unique] IBindCtx *pbc
  631.     );
  632.  
  633.     HRESULT BindIfRunning
  634.     (
  635.         void
  636.     );
  637.  
  638.     HRESULT GetBoundSource
  639.     (
  640.         [out] IUnknown **ppunk
  641.     );
  642.  
  643.     HRESULT UnbindSource
  644.     (
  645.         void
  646.     );
  647.  
  648.     HRESULT Update
  649.     (
  650.         [in, unique] IBindCtx *pbc
  651.     );
  652.  
  653. }
  654.  
  655. [
  656.     object,
  657.     uuid(0000011c-0000-0000-C000-000000000046),
  658.     pointer_default(unique)
  659. ]
  660.  
  661. interface IOleItemContainer : IOleContainer
  662. {
  663.  
  664.     typedef [unique] IOleItemContainer *LPOLEITEMCONTAINER;
  665.  
  666.     typedef enum tagBINDSPEED
  667.     {
  668.         BINDSPEED_INDEFINITE    = 1,
  669.         BINDSPEED_MODERATE      = 2,
  670.         BINDSPEED_IMMEDIATE     = 3
  671.     } BINDSPEED;
  672.  
  673.     typedef [v1_enum] enum tagOLECONTF
  674.     {
  675.         OLECONTF_EMBEDDINGS     = 1,
  676.         OLECONTF_LINKS          = 2,
  677.         OLECONTF_OTHERS         = 4,
  678.         OLECONTF_ONLYUSER       = 8,
  679.         OLECONTF_ONLYIFRUNNING  = 16
  680.     } OLECONTF;
  681.  
  682.     HRESULT GetObject(
  683.         [in] LPOLESTR pszItem,
  684.         [in] DWORD dwSpeedNeeded,
  685.         [in, unique] IBindCtx *pbc,
  686.         [in] REFIID riid,
  687.         [out, iid_is(riid)] void **ppvObject);
  688.  
  689.     HRESULT GetObjectStorage(
  690.         [in] LPOLESTR pszItem,
  691.         [in, unique] IBindCtx *pbc,
  692.         [in] REFIID riid,
  693.         [out, iid_is(riid)] void **ppvStorage);
  694.  
  695.     HRESULT IsRunning(
  696.         [in] LPOLESTR pszItem);
  697. }
  698.  
  699. [
  700.     object,
  701.     uuid(00000115-0000-0000-C000-000000000046),
  702.     pointer_default(unique)
  703. ]
  704.  
  705. interface IOleInPlaceUIWindow : IOleWindow
  706. {
  707.  
  708.     typedef [unique] IOleInPlaceUIWindow *LPOLEINPLACEUIWINDOW;
  709.  
  710.     typedef RECT BORDERWIDTHS;
  711.  
  712.     typedef LPRECT LPBORDERWIDTHS;
  713.  
  714.     typedef LPCRECT LPCBORDERWIDTHS;
  715.  
  716.  
  717.     [input_sync]
  718.     HRESULT GetBorder
  719.     (
  720.         [out] LPRECT lprectBorder
  721.     );
  722.  
  723.     [input_sync]
  724.     HRESULT RequestBorderSpace
  725.     (
  726.         [in, unique] LPCBORDERWIDTHS pborderwidths
  727.     );
  728.  
  729.     [input_sync]
  730.     HRESULT SetBorderSpace
  731.     (
  732.         [in, unique] LPCBORDERWIDTHS pborderwidths
  733.     );
  734.  
  735.   HRESULT SetActiveObject
  736.     (
  737.         [in, unique] IOleInPlaceActiveObject *pActiveObject,
  738.     [in, string, unique] LPCOLESTR pszObjName
  739.     );
  740.  
  741. }
  742.  
  743. [
  744.     object,
  745.     uuid(00000117-0000-0000-C000-000000000046)
  746. ]
  747.  
  748. interface IOleInPlaceActiveObject : IOleWindow
  749. {
  750.  
  751.     typedef [unique] IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT;
  752.  
  753.     [local]
  754.     HRESULT TranslateAccelerator
  755.     (
  756.         [in] LPMSG lpmsg
  757.     );
  758.  
  759.     [call_as(TranslateAccelerator)]
  760.     HRESULT RemoteTranslateAccelerator();
  761.  
  762.     [input_sync]
  763.     HRESULT OnFrameWindowActivate
  764.     (
  765.         [in] BOOL fActivate
  766.     );
  767.  
  768.     [input_sync]
  769.     HRESULT OnDocWindowActivate
  770.     (
  771.         [in] BOOL fActivate
  772.     );
  773.  
  774.     [local]
  775.     HRESULT ResizeBorder
  776.     (
  777.         [in] LPCRECT prcBorder,
  778.         [in, unique] IOleInPlaceUIWindow *pUIWindow,
  779.         [in] BOOL fFrameWindow
  780.     );
  781.  
  782.     [call_as(ResizeBorder), input_sync]
  783.     HRESULT RemoteResizeBorder
  784.     (
  785.         [in] LPCRECT prcBorder,
  786.         [in] REFIID riid,
  787.         [in, unique, iid_is(riid)] IOleInPlaceUIWindow *pUIWindow,
  788.         [in] BOOL fFrameWindow
  789.     );
  790.  
  791.     HRESULT EnableModeless
  792.     (
  793.         [in] BOOL fEnable
  794.     );
  795.  
  796. }
  797.  
  798. [
  799.     object,
  800.     uuid(00000116-0000-0000-C000-000000000046),
  801.     pointer_default(unique)
  802. ]
  803.  
  804. interface IOleInPlaceFrame : IOleInPlaceUIWindow
  805. {
  806.  
  807.     typedef [unique] IOleInPlaceFrame *LPOLEINPLACEFRAME;
  808.  
  809.  
  810. typedef struct tagOIFI          // OleInPlaceFrameInfo
  811. {
  812.     UINT    cb;
  813.     BOOL    fMDIApp;
  814.     HWND    hwndFrame;
  815.     HACCEL  haccel;
  816.     UINT    cAccelEntries;
  817. } OLEINPLACEFRAMEINFO, * LPOLEINPLACEFRAMEINFO;
  818.  
  819.  
  820. typedef struct tagOleMenuGroupWidths
  821. {
  822.     LONG    width[6];
  823. } OLEMENUGROUPWIDTHS, * LPOLEMENUGROUPWIDTHS;
  824.  
  825.     typedef HGLOBAL HOLEMENU;
  826.  
  827.     HRESULT InsertMenus
  828.     (
  829.         [in] HMENU hmenuShared,
  830.         [in,out] LPOLEMENUGROUPWIDTHS lpMenuWidths
  831.     );
  832.  
  833.     [input_sync]
  834.     HRESULT SetMenu
  835.     (
  836.         [in] HMENU hmenuShared,
  837.         [in] HOLEMENU holemenu,
  838.         [in] HWND hwndActiveObject
  839.     );
  840.  
  841.     HRESULT RemoveMenus
  842.     (
  843.         [in] HMENU hmenuShared
  844.     );
  845.  
  846.     [input_sync]
  847.     HRESULT SetStatusText
  848.     (
  849.         [in, unique] LPCOLESTR pszStatusText
  850.     );
  851.  
  852.     HRESULT EnableModeless
  853.     (
  854.         [in] BOOL fEnable
  855.     );
  856.  
  857.     HRESULT TranslateAccelerator
  858.     (
  859.         [in] LPMSG lpmsg,
  860.         [in] WORD wID
  861.     );
  862.  
  863. }
  864.  
  865. [
  866.     object,
  867.     uuid(00000113-0000-0000-C000-000000000046),
  868.     pointer_default(unique)
  869. ]
  870.  
  871. interface IOleInPlaceObject : IOleWindow
  872. {
  873.  
  874.     typedef [unique] IOleInPlaceObject *LPOLEINPLACEOBJECT;
  875.  
  876.  
  877.     HRESULT InPlaceDeactivate
  878.     (
  879.         void
  880.     );
  881.  
  882.     HRESULT UIDeactivate
  883.     (
  884.         void
  885.     );
  886.  
  887.     [input_sync]
  888.     HRESULT SetObjectRects
  889.     (
  890.         [in] LPCRECT lprcPosRect,
  891.         [in] LPCRECT lprcClipRect
  892.     );
  893.  
  894.     HRESULT ReactivateAndUndo
  895.     (
  896.         void
  897.     );
  898. }
  899.  
  900. [
  901.     object,
  902.     uuid(00000119-0000-0000-C000-000000000046),
  903.     pointer_default(unique)
  904. ]
  905.  
  906. interface IOleInPlaceSite : IOleWindow
  907. {
  908.  
  909.     typedef [unique] IOleInPlaceSite *LPOLEINPLACESITE;
  910.  
  911.     HRESULT CanInPlaceActivate
  912.     (
  913.         void
  914.     );
  915.  
  916.     HRESULT OnInPlaceActivate
  917.     (
  918.         void
  919.     );
  920.  
  921.     HRESULT OnUIActivate
  922.     (
  923.         void
  924.     );
  925.  
  926.     HRESULT GetWindowContext
  927.     (
  928.         [out] IOleInPlaceFrame **ppFrame,
  929.         [out] IOleInPlaceUIWindow **ppDoc,
  930.         [out] LPRECT lprcPosRect,
  931.         [out] LPRECT lprcClipRect,
  932.         [in, out] LPOLEINPLACEFRAMEINFO lpFrameInfo
  933.     );
  934.  
  935.     HRESULT Scroll
  936.     (
  937.         [in] SIZE scrollExtant
  938.     );
  939.  
  940.     HRESULT OnUIDeactivate
  941.     (
  942.         [in] BOOL fUndoable
  943.     );
  944.  
  945.     HRESULT OnInPlaceDeactivate
  946.     (
  947.         void
  948.     );
  949.  
  950.     HRESULT DiscardUndoState
  951.     (
  952.         void
  953.     );
  954.  
  955.     HRESULT DeactivateAndUndo
  956.     (
  957.         void
  958.     );
  959.  
  960.     HRESULT OnPosRectChange
  961.     (
  962.         [in] LPCRECT lprcPosRect
  963.     );
  964.  
  965. }
  966.  
  967. [
  968.     object,
  969.     uuid(0000012a-0000-0000-C000-000000000046)
  970. ]
  971.  
  972. interface IContinue : IUnknown
  973. {
  974.     HRESULT FContinue();
  975. }
  976.  
  977. [
  978.     object,
  979.     uuid(0000010d-0000-0000-C000-000000000046)
  980. ]
  981.  
  982. interface IViewObject : IUnknown
  983. {
  984.  
  985.     typedef [unique] IViewObject *LPVIEWOBJECT;
  986.  
  987.     [local]
  988.     HRESULT Draw
  989.     (
  990.         [in] DWORD dwDrawAspect,
  991.         [in] LONG lindex,
  992.         [in, unique] void * pvAspect,
  993.         [in, unique] DVTARGETDEVICE *ptd,
  994.         [in] HDC hdcTargetDev,
  995.         [in] HDC hdcDraw,
  996.         [in] LPCRECTL lprcBounds,
  997.         [in, unique] LPCRECTL lprcWBounds,
  998.         [in] BOOL (*pfnContinue)(DWORD dwContinue),
  999.         [in] DWORD dwContinue
  1000.     );
  1001.  
  1002.     [call_as(Draw)]
  1003.     HRESULT RemoteDraw
  1004.     (
  1005.         [in] DWORD dwDrawAspect,
  1006.         [in] LONG lindex,
  1007.         [in] DWORD pvAspect,
  1008.         [in, unique] DVTARGETDEVICE *ptd,
  1009.         [in] DWORD hdcTargetDev,
  1010.         [in] DWORD hdcDraw,
  1011.         [in] LPCRECTL lprcBounds,
  1012.         [in, unique] LPCRECTL lprcWBounds,
  1013.         [in] IContinue *pContinue
  1014.     );
  1015.  
  1016.     [local]
  1017.     HRESULT GetColorSet
  1018.     (
  1019.         [in] DWORD dwDrawAspect,
  1020.         [in] LONG lindex,
  1021.         [in, unique] void *pvAspect,
  1022.         [in, unique] DVTARGETDEVICE *ptd,
  1023.         [in] HDC hicTargetDev,
  1024.         [out] LOGPALETTE **ppColorSet
  1025.     );
  1026.  
  1027.     [call_as(GetColorSet)]
  1028.     HRESULT RemoteGetColorSet
  1029.     (
  1030.         [in] DWORD dwDrawAspect,
  1031.         [in] LONG lindex,
  1032.         [in] DWORD pvAspect,
  1033.         [in, unique] DVTARGETDEVICE *ptd,
  1034.         [in] DWORD hicTargetDev,
  1035.         [out] LOGPALETTE **ppColorSet
  1036.     );
  1037.  
  1038.     [local]
  1039.     HRESULT Freeze
  1040.     (
  1041.         [in] DWORD dwDrawAspect,
  1042.         [in] LONG lindex,
  1043.         [in, unique] void *pvAspect,
  1044.         [out] DWORD *pdwFreeze
  1045.     );
  1046.  
  1047.     [call_as(Freeze)]
  1048.     HRESULT RemoteFreeze
  1049.     (
  1050.         [in] DWORD dwDrawAspect,
  1051.         [in] LONG lindex,
  1052.         [in] DWORD pvAspect,
  1053.         [out] DWORD *pdwFreeze
  1054.     );
  1055.  
  1056.  
  1057.     HRESULT Unfreeze
  1058.     (
  1059.         [in] DWORD dwFreeze
  1060.     );
  1061.  
  1062.     HRESULT SetAdvise
  1063.     (
  1064.         [in] DWORD aspects,
  1065.         [in] DWORD advf,
  1066.         [in, unique] IAdviseSink *pAdvSink
  1067.     );
  1068.  
  1069.     [local]
  1070.     HRESULT GetAdvise
  1071.     (
  1072.         [out, unique] DWORD *pAspects,
  1073.         [out, unique] DWORD *pAdvf,
  1074.         [out] IAdviseSink **ppAdvSink
  1075.     );
  1076.  
  1077.     [call_as(GetAdvise)]
  1078.     HRESULT RemoteGetAdvise
  1079.     (
  1080.         [out] DWORD *pAspects,
  1081.         [out] DWORD *pAdvf,
  1082.         [out] IAdviseSink **ppAdvSink
  1083.     );
  1084.  
  1085. }
  1086.  
  1087. [
  1088.     object,
  1089.     uuid(00000127-0000-0000-C000-000000000046)
  1090. ]
  1091.  
  1092. interface IViewObject2 : IViewObject
  1093. {
  1094.  
  1095.     typedef [unique] IViewObject2 *LPVIEWOBJECT2;
  1096.  
  1097.     HRESULT GetExtent
  1098.     (
  1099.         [in]  DWORD dwDrawAspect,
  1100.         [in]  LONG lindex,
  1101.         [in, unique]  DVTARGETDEVICE* ptd,
  1102.         [out] LPSIZEL lpsizel
  1103.     );
  1104.  
  1105. }
  1106.  
  1107.  
  1108. [
  1109.     local,
  1110.     object,
  1111.     uuid(00000121-0000-0000-C000-000000000046)
  1112. ]
  1113.  
  1114. interface IDropSource : IUnknown
  1115. {
  1116.  
  1117.     typedef [unique] IDropSource *LPDROPSOURCE;
  1118.  
  1119.     HRESULT QueryContinueDrag
  1120.     (
  1121.         [in] BOOL fEscapePressed,
  1122.         [in] DWORD grfKeyState
  1123.     );
  1124.  
  1125.     HRESULT GiveFeedback
  1126.     (
  1127.         [in] DWORD dwEffect
  1128.     );
  1129. }
  1130.  
  1131. [
  1132.     object,
  1133.     uuid(00000122-0000-0000-C000-000000000046),
  1134.     pointer_default(unique)
  1135. ]
  1136.  
  1137. interface IDropTarget : IUnknown
  1138. {
  1139.  
  1140.     typedef [unique] IDropTarget *LPDROPTARGET;
  1141.  
  1142.  
  1143.     const DWORD MK_ALT = 0x0020;
  1144.  
  1145.     const DWORD DROPEFFECT_NONE = 0;
  1146.     const DWORD DROPEFFECT_COPY = 1;
  1147.     const DWORD DROPEFFECT_MOVE = 2;
  1148.     const DWORD DROPEFFECT_LINK = 4;
  1149.     const DWORD DROPEFFECT_SCROLL = 0x80000000;
  1150.  
  1151.     cpp_quote("// default inset-width of the hot zone, in pixels")
  1152.     cpp_quote("//   typical use: GetProfileInt(\"windows\",\"DragScrollInset\",DD_DEFSCROLLINSET)")
  1153.     const DWORD DD_DEFSCROLLINSET = 11;
  1154.  
  1155.     cpp_quote("// default delay before scrolling, in milliseconds")
  1156.     cpp_quote("//   typical use: GetProfileInt(\"windows\",\"DragScrollDelay\",DD_DEFSCROLLDELAY)")
  1157.     const DWORD DD_DEFSCROLLDELAY = 50;
  1158.  
  1159.     cpp_quote("// default scroll interval, in milliseconds")
  1160.     cpp_quote("//   typical use: GetProfileInt(\"windows\",\"DragScrollInterval\", DD_DEFSCROLLINTERVAL)")
  1161.     const DWORD DD_DEFSCROLLINTERVAL = 50;
  1162.  
  1163.     cpp_quote("// default delay before dragging should start, in milliseconds")
  1164.     cpp_quote("//   typical use: GetProfileInt(\"windows\", \"DragDelay\", DD_DEFDRAGDELAY)")
  1165.     const DWORD DD_DEFDRAGDELAY = 200;
  1166.  
  1167.     cpp_quote("// default minimum distance (radius) before dragging should start, in pixels")
  1168.     cpp_quote("//   typical use: GetProfileInt(\"windows\", \"DragMinDist\", DD_DEFDRAGMINDIST)")
  1169.     const DWORD DD_DEFDRAGMINDIST = 2;
  1170.  
  1171.  
  1172.     HRESULT DragEnter
  1173.     (
  1174.         [in, unique] IDataObject *pDataObj,
  1175.         [in] DWORD grfKeyState,
  1176.         [in] POINTL pt,
  1177.         [in, out] DWORD *pdwEffect
  1178.     );
  1179.  
  1180.     HRESULT DragOver
  1181.     (
  1182.         [in] DWORD grfKeyState,
  1183.         [in] POINTL pt,
  1184.         [in, out] DWORD *pdwEffect
  1185.     );
  1186.  
  1187.     HRESULT DragLeave
  1188.     (
  1189.         void
  1190.     );
  1191.  
  1192.     HRESULT Drop
  1193.     (
  1194.         [in, unique] IDataObject *pDataObj,
  1195.         [in] DWORD grfKeyState,
  1196.         [in] POINTL pt,
  1197.         [in, out] DWORD *pdwEffect
  1198.     );
  1199. }
  1200.  
  1201. [
  1202.     object,
  1203.     uuid(00000104-0000-0000-C000-000000000046),
  1204.     pointer_default(unique)
  1205. ]
  1206.  
  1207. interface IEnumOLEVERB : IUnknown
  1208. {
  1209.  
  1210.     typedef [unique] IEnumOLEVERB *LPENUMOLEVERB;
  1211.  
  1212.     typedef struct tagOLEVERB {
  1213.         LONG    lVerb;
  1214.         LPOLESTR  lpszVerbName;
  1215.         DWORD   fuFlags;
  1216.         DWORD grfAttribs;
  1217.         } OLEVERB, * LPOLEVERB;
  1218.  
  1219.     // Bitwise verb attributes used in OLEVERB.grfAttribs
  1220.     typedef [v1_enum] enum tagOLEVERBATTRIB // bitwise
  1221.     {
  1222.         OLEVERBATTRIB_NEVERDIRTIES = 1,
  1223.         OLEVERBATTRIB_ONCONTAINERMENU = 2
  1224.     } OLEVERBATTRIB;
  1225.  
  1226.     [local]
  1227.     HRESULT Next(
  1228.         [in] ULONG celt,
  1229.         [out, size_is(celt), length_is(*pceltFetched)]
  1230.         LPOLEVERB rgelt,
  1231.         [out] ULONG *pceltFetched);
  1232.  
  1233.     [call_as(Next)]
  1234.     HRESULT RemoteNext(
  1235.         [in] ULONG celt,
  1236.         [out, size_is(celt), length_is(*pceltFetched)]
  1237.         LPOLEVERB rgelt,
  1238.         [out] ULONG *pceltFetched);
  1239.  
  1240.     HRESULT Skip(
  1241.         [in] ULONG celt);
  1242.  
  1243.     HRESULT Reset();
  1244.  
  1245.     HRESULT Clone(
  1246.         [out] IEnumOLEVERB **ppenum);
  1247. }
  1248.  
  1249.