wine/include/oleidl.idl
2007-06-08 15:49:36 +02:00

956 lines
22 KiB
Text

/*
* Copyright (C) 1999 Paul Quinn
* Copyright (C) 1999 Francis Beaudet
* Copyright (C) 2003 Alexandre Julliard
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef DO_NO_IMPORTS
import "objidl.idl";
#endif
interface IOleInPlaceActiveObject;
/*****************************************************************************
* IOleTypes interface
*/
[
uuid(b0916c84-7416-101a-bcea-08002b2b79ef)
]
interface IOLETypes
{
typedef enum tagOLERENDER
{
OLERENDER_NONE = 0,
OLERENDER_DRAW = 1,
OLERENDER_FORMAT = 2,
OLERENDER_ASIS = 3
} OLERENDER, *LPOLERENDER;
typedef struct tagOBJECTDESCRIPTOR
{
ULONG cbSize;
CLSID clsid;
DWORD dwDrawAspect;
SIZEL sizel;
POINTL pointl;
DWORD dwStatus;
DWORD dwFullUserTypeName;
DWORD dwSrcOfCopy;
} OBJECTDESCRIPTOR, *POBJECTDESCRIPTOR, *LPOBJECTDESCRIPTOR,
LINKSRCDESCRIPTOR, *PLINKSRCDESCRIPTOR, *LPLINKSRCDESCRIPTOR;
}
/*****************************************************************************
* IOleWindow interface
*/
[
object,
uuid(00000114-0000-0000-c000-000000000046),
pointer_default(unique)
]
interface IOleWindow : IUnknown
{
typedef [unique] IOleWindow *LPOLEWINDOW;
HRESULT GetWindow(
[out] HWND *phwnd);
HRESULT ContextSensitiveHelp(
[in] BOOL fEnterMode);
}
/*****************************************************************************
* IOleInPlaceObject interface
*/
[
object,
uuid(00000113-0000-0000-c000-000000000046),
pointer_default(unique)
]
interface IOleInPlaceObject : IOleWindow
{
typedef [unique] IOleInPlaceObject *LPOLEINPLACEOBJECT;
HRESULT InPlaceDeactivate();
HRESULT UIDeactivate();
HRESULT SetObjectRects(
[in] LPCRECT lprcPosRect,
[in] LPCRECT lprcClipRect);
HRESULT ReactivateAndUndo();
}
/*****************************************************************************
* IOleInPlaceUIWindow interface
*/
[
object,
uuid(00000115-0000-0000-c000-000000000046),
pointer_default(unique)
]
interface IOleInPlaceUIWindow : IOleWindow
{
typedef [unique] IOleInPlaceUIWindow *LPOLEINPLACEUIWINDOW;
typedef RECT BORDERWIDTHS;
typedef LPRECT LPBORDERWIDTHS;
typedef LPCRECT LPCBORDERWIDTHS;
HRESULT GetBorder(
[out] LPRECT lprectBorder);
HRESULT RequestBorderSpace(
[in, unique] LPCBORDERWIDTHS pborderwidths);
HRESULT SetBorderSpace(
[in, unique] LPCBORDERWIDTHS pborderwidths);
HRESULT SetActiveObject(
[in, unique] IOleInPlaceActiveObject *pActiveObject,
[in, string, unique] LPCOLESTR pszObjName);
}
/* avoid conflict with Wine Unicode macros */
cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
cpp_quote("#undef TranslateAccelerator")
cpp_quote("#endif")
/*****************************************************************************
* IOleInPlaceFrame interface
*/
[
object,
uuid(00000116-0000-0000-c000-000000000046),
pointer_default(unique)
]
interface IOleInPlaceFrame : IOleInPlaceUIWindow
{
typedef [unique] IOleInPlaceFrame *LPOLEINPLACEFRAME;
typedef struct tagOleInPlaceFrameInfo
{
UINT cb;
BOOL fMDIApp;
HWND hwndFrame;
HACCEL haccel;
UINT cAccelEntries;
} OLEINPLACEFRAMEINFO, *LPOLEINPLACEFRAMEINFO;
typedef struct tagOleMenuGroupWidths
{
LONG width[ 6 ];
} OLEMENUGROUPWIDTHS, *LPOLEMENUGROUPWIDTHS;
typedef HGLOBAL HOLEMENU;
HRESULT InsertMenus(
[in] HMENU hmenuShared,
[in,out] LPOLEMENUGROUPWIDTHS lpMenuWidths);
HRESULT SetMenu(
[in] HMENU hmenuShared,
[in] HOLEMENU holemenu,
[in] HWND hwndActiveObject);
HRESULT RemoveMenus(
[in] HMENU hmenuShared);
HRESULT SetStatusText(
[in, unique] LPCOLESTR pszStatusText);
HRESULT EnableModeless(
[in] BOOL fEnable);
HRESULT TranslateAccelerator(
[in] LPMSG lpmsg,
[in] WORD wID);
}
/*****************************************************************************
* IOleInPlaceActiveObject interface
*/
[
object,
uuid(00000117-0000-0000-c000-000000000046)
]
interface IOleInPlaceActiveObject : IOleWindow
{
typedef [unique] IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT;
[local]
HRESULT TranslateAccelerator(
[in] LPMSG lpmsg);
[call_as(TranslateAccelerator)]
HRESULT RemoteTranslateAccelerator();
HRESULT OnFrameWindowActivate(
[in] BOOL fActivate);
HRESULT OnDocWindowActivate(
[in] BOOL fActivate);
[local]
HRESULT ResizeBorder(
[in] LPCRECT prcBorder,
[in, unique] IOleInPlaceUIWindow *pUIWindow,
[in] BOOL fFrameWindow);
[call_as(ResizeBorder)]
HRESULT RemoteResizeBorder(
[in] LPCRECT prcBorder,
[in] REFIID riid,
[in, unique, iid_is(riid)] IOleInPlaceUIWindow *pUIWindow,
[in] BOOL fFrameWindow);
HRESULT EnableModeless(
[in] BOOL fEnable);
}
/*****************************************************************************
* IOleInPlaceSite interface
*/
[
object,
uuid(00000119-0000-0000-c000-000000000046),
pointer_default(unique)
]
interface IOleInPlaceSite : IOleWindow
{
typedef [unique] IOleInPlaceSite *LPOLEINPLACESITE;
HRESULT CanInPlaceActivate();
HRESULT OnInPlaceActivate();
HRESULT OnUIActivate();
HRESULT GetWindowContext(
[out] IOleInPlaceFrame **ppFrame,
[out] IOleInPlaceUIWindow **ppDoc,
[out] LPRECT lprcPosRect,
[out] LPRECT lprcClipRect,
[in, out] LPOLEINPLACEFRAMEINFO lpFrameInfo);
HRESULT Scroll(
[in] SIZE scrollExtent);
HRESULT OnUIDeactivate(
[in] BOOL fUndoable);
HRESULT OnInPlaceDeactivate();
HRESULT DiscardUndoState();
HRESULT DeactivateAndUndo();
HRESULT OnPosRectChange(
[in] LPCRECT lprcPosRect);
}
/*****************************************************************************
* IParseDisplayName interface
*/
[
object,
uuid(0000011a-0000-0000-c000-000000000046),
pointer_default(unique)
]
interface IParseDisplayName : IUnknown
{
typedef [unique] IParseDisplayName *LPPARSEDISPLAYNAME;
HRESULT ParseDisplayName(
[in, unique] IBindCtx *pbc,
[in] LPOLESTR pszDisplayName,
[out] ULONG *pchEaten,
[out] IMoniker **ppmkOut);
}
/*****************************************************************************
* IOleContainer interface
*/
[
object,
uuid(0000011b-0000-0000-c000-000000000046),
pointer_default(unique)
]
interface IOleContainer : IParseDisplayName
{
typedef [unique] IOleContainer *LPOLECONTAINER;
HRESULT EnumObjects(
[in] DWORD grfFlags,
[out] IEnumUnknown **ppenum);
HRESULT LockContainer(
[in] BOOL fLock);
}
/*****************************************************************************
* IOleItemContainer interface
*/
[
object,
uuid(0000011c-0000-0000-c000-000000000046),
pointer_default(unique)
]
interface IOleItemContainer : IOleContainer
{
typedef [unique] IOleItemContainer *LPOLEITEMCONTAINER;
typedef enum tagBINDSPEED
{
BINDSPEED_INDEFINITE = 1,
BINDSPEED_MODERATE = 2,
BINDSPEED_IMMEDIATE = 3
} BINDSPEED;
typedef enum tagOLECONTF
{
OLECONTF_EMBEDDINGS = 1,
OLECONTF_LINKS = 2,
OLECONTF_OTHERS = 4,
OLECONTF_OLNYUSER = 8,
OLECONTF_ONLYIFRUNNING = 16
} OLECONTF;
cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
cpp_quote("#undef GetObject")
cpp_quote("#endif")
HRESULT GetObject(
[in] LPOLESTR pszItem,
[in] DWORD dwSpeedNeeded,
[in, unique] IBindCtx *pbc,
[in] REFIID riid,
[out, iid_is(riid)] void **ppvObject);
HRESULT GetObjectStorage(
[in] LPOLESTR pszItem,
[in, unique] IBindCtx *pbc,
[in] REFIID riid,
[out, iid_is(riid)] void **ppvStorage);
HRESULT IsRunning(
[in] LPOLESTR pszItem);
}
/*****************************************************************************
* IOleLink interface
*/
[
object,
uuid(0000011d-0000-0000-c000-000000000046)
]
interface IOleLink : IUnknown
{
typedef [unique] IOleLink *LPOLELINK;
typedef enum tagOLEUPDATE
{
OLEUPDATE_ALWAYS = 1,
OLEUPDATE_ONCALL = 3
} OLEUPDATE, *POLEUPDATE, *LPOLEUPDATE;
typedef enum tagOLELINKBIND
{
OLELINKBIND_EVENIFCLASSDIFF = 1
} OLELINKBIND;
HRESULT SetUpdateOptions(
[in] DWORD dwUpdateOpt);
HRESULT GetUpdateOptions(
[out] DWORD *pdwUpdateOpt);
HRESULT SetSourceMoniker(
[in, unique] IMoniker *pmk,
[in] REFCLSID rclsid);
HRESULT GetSourceMoniker(
[out] IMoniker **ppmk);
HRESULT SetSourceDisplayName(
[in]LPCOLESTR pszStatusText);
HRESULT GetSourceDisplayName(
[out] LPOLESTR *ppszDisplayName);
HRESULT BindToSource(
[in] DWORD bindflags,
[in, unique] IBindCtx *pbc);
HRESULT BindIfRunning();
HRESULT GetBoundSource(
[out] IUnknown **ppunk);
HRESULT UnbindSource();
HRESULT Update(
[in, unique] IBindCtx *pbc);
}
/*****************************************************************************
* IOleClientSite interface
*/
[
object,
uuid(00000118-0000-0000-c000-000000000046),
pointer_default(unique)
]
interface IOleClientSite : IUnknown
{
typedef [unique] IOleClientSite * LPOLECLIENTSITE;
HRESULT SaveObject();
HRESULT GetMoniker(
[in] DWORD dwAssign,
[in] DWORD dwWhichMoniker,
[out] IMoniker **ppmk);
HRESULT GetContainer(
[out] IOleContainer **ppContainer);
HRESULT ShowObject();
HRESULT OnShowWindow(
[in] BOOL fShow);
HRESULT RequestNewObjectLayout();
}
/*****************************************************************************
* IOleCache interface
*/
[
object,
uuid(0000011e-0000-0000-c000-000000000046),
pointer_default(unique)
]
interface IOleCache : IUnknown
{
typedef [unique] IOleCache *LPOLECACHE;
HRESULT Cache(
[in, unique] FORMATETC *pformatetc,
[in] DWORD advf,
[out] DWORD *pdwConnection);
HRESULT Uncache(
[in] DWORD dwConnection);
HRESULT EnumCache(
[out] IEnumSTATDATA **ppenumSTATDATA);
HRESULT InitCache(
[in, unique] IDataObject *pDataObject);
HRESULT SetData(
[in, unique] FORMATETC *pformatetc,
[in, unique] STGMEDIUM *pmedium,
[in] BOOL fRelease);
}
/*****************************************************************************
* IOleCache2 interface
*/
[
object,
uuid(00000128-0000-0000-c000-000000000046),
pointer_default(unique)
]
interface IOleCache2 : IOleCache
{
typedef [unique] IOleCache2 *LPOLECACHE2;
const DWORD UPDFCACHE_NODATACACHE = 0x00000001;
const DWORD UPDFCACHE_ONSAVECACHE = 0x00000002;
const DWORD UPDFCACHE_ONSTOPCACHE = 0x00000004;
const DWORD UPDFCACHE_NORMALCACHE = 0x00000008;
const DWORD UPDFCACHE_IFBLANK = 0x00000010;
const DWORD UPDFCACHE_ONLYIFBLANK = 0x80000000;
const DWORD UPDFCACHE_IFBLANKORONSAVECACHE = (UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE);
const DWORD UPDFCACHE_ALL = ((DWORD)(~(UPDFCACHE_ONLYIFBLANK)));
const DWORD UPDFCACHE_ALLBUTNODATACACHE = (UPDFCACHE_ALL & ((DWORD)(~UPDFCACHE_NODATACACHE)));
typedef enum tagDISCARDCACHE
{
DISCARDCACHE_SAVEIFDIRTY = 0,
DISCARDCACHE_NOSAVE = 1
} DISCARDCACHE;
[local]
HRESULT UpdateCache(
[in] LPDATAOBJECT pDataObject,
[in] DWORD grfUpdf,
[in] LPVOID pReserved);
[call_as(UpdateCache)]
HRESULT RemoteUpdateCache(
[in] LPDATAOBJECT pDataObject,
[in] DWORD grfUpdf,
[in] LONG_PTR pReserved);
HRESULT DiscardCache(
[in] DWORD dwDiscardOptions);
}
/*****************************************************************************
* IOleCacheControl interface
*/
[
object,
uuid(00000129-0000-0000-c000-000000000046)
]
interface IOleCacheControl : IUnknown
{
typedef [unique] IOleCacheControl *LPOLECACHECONTROL;
HRESULT OnRun(
LPDATAOBJECT pDataObject);
HRESULT OnStop();
}
/*****************************************************************************
* IEnumOLEVERB interface
*/
[
object,
uuid(00000104-0000-0000-c000-000000000046),
pointer_default(unique)
]
interface IEnumOLEVERB : IUnknown
{
typedef [unique] IEnumOLEVERB *LPENUMOLEVERB;
typedef struct tagOLEVERB
{
LONG lVerb;
LPOLESTR lpszVerbName;
DWORD fuFlags;
DWORD grfAttribs;
} OLEVERB, *LPOLEVERB;
typedef enum tagOLEVERBATTRIB
{
OLEVERBATTRIB_NEVERDIRTIES = 1,
OLEVERBATTRIB_ONCONTAINERMENU = 2
} OLEVERBATTRIB;
[local]
HRESULT Next(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] LPOLEVERB rgelt,
[out] ULONG *pceltFetched);
[call_as(Next)]
HRESULT RemoteNext(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] LPOLEVERB rgelt,
[out] ULONG *pceltFetched);
HRESULT Skip(
[in] ULONG celt);
HRESULT Reset();
HRESULT Clone(
[out] IEnumOLEVERB **ppenum);
}
/*****************************************************************************
* IOleObject interface
*/
[
object,
uuid(00000112-0000-0000-c000-000000000046),
pointer_default(unique)
]
interface IOleObject : IUnknown
{
typedef [unique] IOleObject *LPOLEOBJECT;
typedef enum tagOLEGETMONIKER
{
OLEGETMONIKER_ONLYIFTHERE = 1,
OLEGETMONIKER_FORCEASSIGN = 2,
OLEGETMONIKER_UNASSIGN = 3,
OLEGETMONIKER_TEMPFORUSER = 4
} OLEGETMONIKER;
typedef enum tagOLEWHICHMK
{
OLEWHICHMK_CONTAINER = 1,
OLEWHICHMK_OBJREL = 2,
OLEWHICHMK_OBJFULL = 3
} OLEWHICHMK;
typedef enum tagUSERCLASSTYPE
{
USERCLASSTYPE_FULL = 1,
USERCLASSTYPE_SHORT = 2,
USERCLASSTYPE_APPNAME = 3
} USERCLASSTYPE;
typedef enum tagOLEMISC
{
OLEMISC_RECOMPOSEONRESIZE = 0x1,
OLEMISC_ONLYICONIC = 0x2,
OLEMISC_INSERTNOTREPLACE = 0x4,
OLEMISC_STATIC = 0x8,
OLEMISC_CANTLINKINSIDE = 0x10,
OLEMISC_CANLINKBYOLE1 = 0x20,
OLEMISC_ISLINKOBJECT = 0x40,
OLEMISC_INSIDEOUT = 0x80,
OLEMISC_ACTIVATEWHENVISIBLE = 0x100,
OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200,
OLEMISC_INVISIBLEATRUNTIME = 0x400,
OLEMISC_ALWAYSRUN = 0x800,
OLEMISC_ACTSLIKEBUTTON = 0x1000,
OLEMISC_ACTSLIKELABEL = 0x2000,
OLEMISC_NOUIACTIVATE = 0x4000,
OLEMISC_ALIGNABLE = 0x8000,
OLEMISC_SIMPLEFRAME = 0x10000,
OLEMISC_SETCLIENTSITEFIRST = 0x20000,
OLEMISC_IMEMODE = 0x40000,
OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000,
OLEMISC_WANTSTOMENUMERGE = 0x100000,
OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000
} OLEMISC;
typedef enum tagOLECLOSE
{
OLECLOSE_SAVEIFDIRTY = 0,
OLECLOSE_NOSAVE = 1,
OLECLOSE_PROMPTSAVE = 2
} OLECLOSE;
HRESULT SetClientSite(
[in, unique] IOleClientSite *pClientSite);
HRESULT GetClientSite(
[out] IOleClientSite **ppClientSite);
HRESULT SetHostNames(
[in] LPCOLESTR szContainerApp,
[in, unique] LPCOLESTR szContainerObj);
HRESULT Close(
[in] DWORD dwSaveOption);
HRESULT SetMoniker(
[in] DWORD dwWhichMoniker,
[in, unique] IMoniker *pmk);
HRESULT GetMoniker(
[in] DWORD dwAssign,
[in] DWORD dwWhichMoniker,
[out] IMoniker **ppmk);
HRESULT InitFromData(
[in, unique] IDataObject *pDataObject,
[in] BOOL fCreation,
[in] DWORD dwReserved);
HRESULT GetClipboardData(
[in] DWORD dwReserved,
[out] IDataObject **ppDataObject);
HRESULT DoVerb(
[in] LONG iVerb,
[in, unique] LPMSG lpmsg,
[in, unique] IOleClientSite *pActiveSite,
[in] LONG lindex,
[in] HWND hwndParent,
[in, unique] LPCRECT lprcPosRect);
HRESULT EnumVerbs(
[out] IEnumOLEVERB **ppEnumOleVerb);
HRESULT Update();
HRESULT IsUpToDate();
HRESULT GetUserClassID(
[out] CLSID *pClsid);
HRESULT GetUserType(
[in] DWORD dwFormOfType,
[out] LPOLESTR *pszUserType);
HRESULT SetExtent(
[in] DWORD dwDrawAspect,
[in] SIZEL *psizel);
HRESULT GetExtent(
[in] DWORD dwDrawAspect,
[out] SIZEL *psizel);
HRESULT Advise(
[in, unique] IAdviseSink *pAdvSink,
[out] DWORD *pdwConnection);
HRESULT Unadvise(
[in] DWORD dwConnection);
HRESULT EnumAdvise(
[out] IEnumSTATDATA **ppenumAdvise);
HRESULT GetMiscStatus(
[in] DWORD dwAspect,
[out] DWORD *pdwStatus);
HRESULT SetColorScheme(
[in] LOGPALETTE *pLogpal);
}
/*****************************************************************************
* IOleAdviseHolder interface
*/
[
local,
object,
uuid(00000111-0000-0000-c000-000000000046)
]
interface IOleAdviseHolder : IUnknown
{
typedef [unique] IOleAdviseHolder * LPOLEADVISEHOLDER;
HRESULT Advise(
[in, unique] IAdviseSink *pAdvise,
[out] DWORD *pdwConnection);
HRESULT Unadvise(
[in] DWORD dwConnection);
HRESULT EnumAdvise(
[out] IEnumSTATDATA **ppenumAdvise);
HRESULT SendOnRename(
[in, unique] IMoniker *pmk);
HRESULT SendOnSave();
HRESULT SendOnClose();
}
/*****************************************************************************
* IContinue interface
*/
[
object,
uuid(0000012a-0000-0000-c000-000000000046)
]
interface IContinue : IUnknown
{
HRESULT FContinue();
}
/*****************************************************************************
* IViewObject interface
*/
[
object,
uuid(0000010d-0000-0000-c000-000000000046)
]
interface IViewObject : IUnknown
{
typedef [unique] IViewObject *LPVIEWOBJECT;
[local]
HRESULT Draw(
[in] DWORD dwDrawAspect,
[in] LONG lindex,
[in, unique] void * pvAspect,
[in, unique] DVTARGETDEVICE *ptd,
[in] HDC hdcTargetDev,
[in] HDC hdcDraw,
[in] LPCRECTL lprcBounds,
[in, unique] LPCRECTL lprcWBounds,
[in] BOOL (*pfnContinue)(ULONG_PTR dwContinue),
[in] ULONG_PTR dwContinue);
[call_as(Draw)]
HRESULT RemoteDraw(
[in] DWORD dwDrawAspect,
[in] LONG lindex,
[in] ULONG_PTR pvAspect,
[in, unique] DVTARGETDEVICE *ptd,
[in] ULONG_PTR hdcTargetDev,
[in] ULONG_PTR hdcDraw,
[in] LPCRECTL lprcBounds,
[in, unique] LPCRECTL lprcWBounds,
[in] IContinue *pContinue);
[local]
HRESULT GetColorSet(
[in] DWORD dwDrawAspect,
[in] LONG lindex,
[in, unique] void *pvAspect,
[in, unique] DVTARGETDEVICE *ptd,
[in] HDC hicTargetDev,
[out] LOGPALETTE **ppColorSet);
[call_as(GetColorSet)]
HRESULT RemoteGetColorSet(
[in] DWORD dwDrawAspect,
[in] LONG lindex,
[in] ULONG_PTR pvAspect,
[in, unique] DVTARGETDEVICE *ptd,
[in] ULONG_PTR hicTargetDev,
[out] LOGPALETTE **ppColorSet);
[local]
HRESULT Freeze(
[in] DWORD dwDrawAspect,
[in] LONG lindex,
[in, unique] void *pvAspect,
[out] DWORD *pdwFreeze);
[call_as(Freeze)]
HRESULT RemoteFreeze(
[in] DWORD dwDrawAspect,
[in] LONG lindex,
[in] ULONG_PTR pvAspect,
[out] DWORD *pdwFreeze);
HRESULT Unfreeze(
[in] DWORD dwFreeze);
HRESULT SetAdvise(
[in] DWORD aspects,
[in] DWORD advf,
[in, unique] IAdviseSink *pAdvSink);
[local]
HRESULT GetAdvise(
[out, unique] DWORD *pAspects,
[out, unique] DWORD *pAdvf,
[out] IAdviseSink **ppAdvSink);
[call_as(GetAdvise)]
HRESULT RemoteGetAdvise(
[out] DWORD *pAspects,
[out] DWORD *pAdvf,
[out] IAdviseSink **ppAdvSink);
}
/*****************************************************************************
* IViewObject2 interface
*/
[
object,
uuid(00000127-0000-0000-c000-000000000046)
]
interface IViewObject2 : IViewObject
{
typedef [unique] IViewObject2 *LPVIEWOBJECT2;
HRESULT GetExtent(
[in] DWORD dwDrawAspect,
[in] LONG lindex,
[in, unique] DVTARGETDEVICE* ptd,
[out] LPSIZEL lpsizel);
}
/*****************************************************************************
* IDropSource interface
*/
[
local,
object,
uuid(00000121-0000-0000-c000-000000000046)
]
interface IDropSource : IUnknown
{
typedef [unique] IDropSource *LPDROPSOURCE;
HRESULT QueryContinueDrag(
[in] BOOL fEscapePressed,
[in] DWORD grfKeyState);
HRESULT GiveFeedback(
[in] DWORD dwEffect);
}
/*****************************************************************************
* IDropTarget interface
*/
[
object,
uuid(00000122-0000-0000-c000-000000000046),
pointer_default(unique)
]
interface IDropTarget : IUnknown
{
typedef [unique] IDropTarget *LPDROPTARGET;
const DWORD MK_ALT = 0x20;
const DWORD DROPEFFECT_NONE = 0;
const DWORD DROPEFFECT_COPY = 1;
const DWORD DROPEFFECT_MOVE = 2;
const DWORD DROPEFFECT_LINK = 4;
const DWORD DROPEFFECT_SCROLL = 0x80000000;
const DWORD DD_DEFSCROLLINSET = 11;
const DWORD DD_DEFSCROLLDELAY = 50;
const DWORD DD_DEFSCROLLINTERVAL = 50;
const DWORD DD_DEFDRAGDELAY = 200;
const DWORD DD_DEFDRAGMINDIST = 2;
HRESULT DragEnter(
[in, unique] IDataObject *pDataObj,
[in] DWORD grfKeyState,
[in] POINTL pt,
[in, out] DWORD *pdwEffect);
HRESULT DragOver(
[in] DWORD grfKeyState,
[in] POINTL pt,
[in, out] DWORD *pdwEffect);
HRESULT DragLeave();
HRESULT Drop(
[in, unique] IDataObject *pDataObj,
[in] DWORD grfKeyState,
[in] POINTL pt,
[in, out] DWORD *pdwEffect);
}