/* * 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; cpp_quote("#include <winuser.h>") /***************************************************************************** * 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_ONLYUSER = 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); }