Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

177 lines
8.6 KiB

#define DTID_DSHIDA 0x00000200L
#define DTID_DSHDROP 0x00000400L
//===========================================================================
// CDS_IDLDropTarget: class definition
//===========================================================================
typedef struct _CDS_IDLDropTarget // idldt
{
#ifdef __cplusplus
//BUGBUG not legal to instantiate abstract base class
//it's only here for the vtable pointer anyway...(fmh)
LPVOID dropt;
#else
IDropTarget dropt;
#endif
int cRef;
LPITEMIDLIST pidl; // IDList to the target folder
HWND hwndOwner;
DWORD grfKeyStateLast; // for previous DragOver/Enter
IDataObject * pdtobj;
DWORD dwEffectLastReturned; // stashed effect that's returned by base class's dragover
LPDROPTARGET pdtgAgr; // aggregate drop target
DWORD dwData; // DTID_*
} CDS_IDLDropTarget, * LPDS_IDLDROPTARGET;
//===========================================================================
// CIDLDropTarget: member function prototypes
//===========================================================================
STDMETHODIMP CDS_IDLDropTarget_QueryInterface(LPDROPTARGET pdropt, REFIID riid, LPVOID * ppvObj);
STDMETHODIMP_(ULONG) CDS_IDLDropTarget_AddRef(LPDROPTARGET pdropt);
STDMETHODIMP_(ULONG) CDS_IDLDropTarget_Release(LPDROPTARGET pdropt);
STDMETHODIMP CDS_IDLDropTarget_DragEnter(LPDROPTARGET pdropt, LPDATAOBJECT pDataObj, DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect);
STDMETHODIMP CDS_IDLDropTarget_DragOver(LPDROPTARGET pdropt, DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect);
STDMETHODIMP CDS_IDLDropTarget_DragLeave(LPDROPTARGET pdropt);
STDMETHODIMP CDS_IDLDropTarget_Drop(LPDROPTARGET pdropt, LPDATAOBJECT pDataObj, DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect);
//
// This macro checks if pdtgt is a subclass of CDS_IDLDropTarget.
// (HACK: We assume nobody overrides QueryInterface).
//
#define ISDS_IDLDROPTARGET(pdtgt) (pdtgt->lpVtbl->QueryInterface == CDS_IDLDropTarget_QueryInterface)
//===========================================================================
// CDS_IDLDropTarget: constructor prototype
//===========================================================================
#ifdef __cplusplus
//BUGBUG IDropTargetVtbl doesn't get defined in c++, make it LPVOID for now
typedef LPVOID IDropTargetVtbl;
#endif
HRESULT CDS_IDLDropTarget_Create(HWND hwndOwner, IDropTargetVtbl * lpVtbl, LPCITEMIDLIST pidl, LPDROPTARGET * ppdropt);
HRESULT CDS_IDLDropTarget_CreateFromPidl(HWND hwnd, LPITEMIDLIST pidl, LPDROPTARGET * ppvOut);
//===========================================================================
// CDS_IDLData : Member function prototypes
//===========================================================================
HRESULT STDMETHODCALLTYPE CDS_IDLData_QueryInterface(LPDATAOBJECT pdtobj, REFIID riid, LPVOID * ppvObj);
STDMETHODIMP_(ULONG) CDS_IDLData_AddRef(LPDATAOBJECT pdtobj);
STDMETHODIMP_(ULONG) CDS_IDLData_Release(LPDATAOBJECT pdtobj);
STDMETHODIMP CDS_IDLData_GetData(LPDATAOBJECT pdtobj, LPFORMATETC pformatetcIn, LPSTGMEDIUM pmedium );
STDMETHODIMP CDS_IDLData_GetDataHere(LPDATAOBJECT pdtobj, LPFORMATETC pformatetc, LPSTGMEDIUM pmedium );
STDMETHODIMP CDS_IDLData_QueryGetData(LPDATAOBJECT pdtobj, LPFORMATETC pformatetc);
STDMETHODIMP CDS_IDLData_GetCanonicalFormatEtc(LPDATAOBJECT pdtobj, LPFORMATETC pformatetc, LPFORMATETC pformatetcOut);
STDMETHODIMP CDS_IDLData_SetData(LPDATAOBJECT pdtobj, LPFORMATETC pformatetc, STGMEDIUM * pmedium, BOOL fRelease);
STDMETHODIMP CDS_IDLData_EnumFormatEtc(LPDATAOBJECT pdtobj, DWORD dwDirection, LPENUMFORMATETC * ppenumFormatEtc);
STDMETHODIMP CDS_IDLData_Advise(LPDATAOBJECT pdtobj, FORMATETC * pFormatetc, DWORD advf, LPADVISESINK pAdvSink, DWORD * pdwConnection);
STDMETHODIMP CDS_IDLData_Unadvise(LPDATAOBJECT pdtobj, DWORD dwConnection);
STDMETHODIMP CDS_IDLData_EnumAdvise(LPDATAOBJECT pdtobj, LPENUMSTATDATA * ppenumAdvise);
HRESULT CDS_IDLData_GetHDrop(IDataObject *pdtobj,
STGMEDIUM *pmedium, BOOL fAltName);
//===========================================================================
// CDS_IDLData : Constructor for subclasses
//===========================================================================
HRESULT CDS_IDLData_CreateInstance(IDataObjectVtbl *lpVtbl, IDataObject **ppdtobj, LPDATAOBJECT pdtInner);
HRESULT CDS_IDLData_CreateFromIDArray2(IDataObjectVtbl * lpVtbl, LPCITEMIDLIST pidlFolder,
UINT cidl, LPCITEMIDLIST apidl[], IDataObject * * ppdtobj);
HRESULT CDS_IDLData_CreateFromIDArray3(IDataObjectVtbl * lpVtbl, LPCITEMIDLIST pidlFolder,
UINT cidl, LPCITEMIDLIST apidl[],
LPDATAOBJECT pdtInner, IDataObject * * ppdtobj);
//===========================================================================
// CDS_IDLDropTarget : Drag & Drop helper
//===========================================================================
HRESULT CDS_IDLDropTarget_DragDropMenu(LPIDLDROPTARGET _this,
DWORD dwDefaultEffect,
IDataObject * pdtobj,
POINTL pt, LPDWORD pdwEffect,
HKEY hkeyProgID, HKEY hkeyBase,
UINT idMenu, DWORD grfKeyState);
HRESULT CDS_IDLDropTarget_DragDropMenuEx(LPIDLDROPTARGET _this,
LPDRAGDROPMENUPARAM pddm);
// object class supports IObjectLifecycle
#define SHCF_SUPPORTS_IOBJLIFE 0x20000000
HRESULT FSDS_CreateFSIDArray(LPCITEMIDLIST pidlFolder, UINT cidl,
LPCITEMIDLIST * apidl,
LPDATAOBJECT pdtInner,
LPDATAOBJECT * pdtobjOut);
extern IDropTargetVtbl cDS_IDLDropTargetVtbl;
extern UINT g_acfDS_IDLData[];
#define CF_DSHDROP 0
#define ICFDSHIDA 1
#define ICFDSOFFSETS 2
#define ICF_DSMAX 5
#define g_cfDS_HDROP g_acfDS_IDLData[CF_DSHDROP]
#define g_cfDS_HIDA g_acfDS_IDLData[ICFDSHIDA]
#define g_cfDS_OFFSETS g_acfDS_IDLData[ICFDSOFFSETS]
BOOL CDS_IDLData_IsOurs(LPDATAOBJECT pdtobj);
void FS_MoveSelectIcons(LPFSTHREADPARAM pfsthp,
LPVOID hNameMappings,
LPCTSTR pszFiles,
BOOL fMove);
LPIDA DataObj_GetDS_HIDA(LPDATAOBJECT pdtobj,
STGMEDIUM *pmedium);
void DSDataObj_EnableHDROP(LPDATAOBJECT pdtobj);
BOOL FSILIsEqual(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2);
HRESULT DoDSMoveOrCopy(DWORD dwEffect,
LPCTSTR szTargetDir,
LPTSTR pFileList);
HRESULT DoDSRename(LPTSTR szDir,
LPTSTR szOldName,
LPTSTR szNewName);
void _DSTransferDelete(HWND hwnd,
HDROP hDrop,
LPCTSTR szDir,
UINT fOptions);
HRESULT DSDoDelete(LPCTSTR szTargetDir, LPTSTR pFileList);
extern void WINAPI DS_IDLData_InitializeClipboardFormats(void);
extern BOOL _TrackPopupMenu(HMENU hmenu, UINT wFlags, int x, int y,
int wReserved, HWND hwndOwner, LPCRECT lprc);
extern void WINAPI IDLData_InitializeClipboardFormats(void);
extern STDMETHODIMP CFSIDLDropTarget_DragEnter(IDropTarget *pdropt,
IDataObject *pdtobj,
DWORD grfKeyState,
POINTL pt,
LPDWORD pdwEffect);
extern DWORD _LimitDefaultEffect(DWORD dwDefEffect, DWORD dwEffectsAllowed);
extern HRESULT CDS_IDLData_CloneForMoveCopy(LPDATAOBJECT pdtobjIn,
LPDATAOBJECT *ppdtobjOut);
extern void FS_PositionItems(HWND hwndOwner, UINT cidl,
const LPITEMIDLIST *ppidl,
IDataObject *pdtobj, POINT *pptOrigin,
BOOL fMove);
extern void FS_FreeMoveCopyList(LPITEMIDLIST *ppidl, UINT cidl);
extern BOOL FS_IsLinkDefault(LPCTSTR szFolder, HDROP hDrop, LPCTSTR pszFirst, BOOL fSameRoot);
HIDA HIDA_Create2(LPVOID pida, UINT cb);
HRESULT WINAPI SHCreateStdEnumFmtEtcEx(UINT cfmt,
const FORMATETC afmt[],
LPDATAOBJECT pdtInner,
LPENUMFORMATETC * ppenumFormatEtc);