#ifndef _SHFLDR_RECYCLEBIN_H_
#define _SHFLDR_RECYCLEBIN_H_
+DWORD WINAPI DoDeleteThreadProc(LPVOID lpParameter);
+HRESULT WINAPI DoDeleteDataObject(IDataObject *pda);
+
class CRecycleBin :
public CComCoClass<CRecycleBin, &CLSID_RecycleBin>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IPersistFolder2,
public IContextMenu,
public IShellPropSheetExt,
+ public IDropTarget,
public IShellExtInit
{
private:
LPITEMIDLIST pidl;
INT iIdEmpty;
+ UINT cfShellIDList;
+ void SF_RegisterClipFmt();
+ BOOL fAcceptFmt; /* flag for pending Drop */
+ BOOL QueryDrop (DWORD dwKeyState, LPDWORD pdwEffect);
public:
CRecycleBin();
// IShellPropSheetExt
virtual HRESULT WINAPI AddPages(LPFNSVADDPROPSHEETPAGE pfnAddPage, LPARAM lParam);
virtual HRESULT WINAPI ReplacePage(EXPPS uPageID, LPFNSVADDPROPSHEETPAGE pfnReplaceWith, LPARAM lParam);
+
+ // IDropTarget
+ virtual HRESULT WINAPI DragEnter(IDataObject *pDataObject, DWORD dwKeyState, POINTL pt, DWORD *pdwEffect);
+ virtual HRESULT WINAPI DragOver(DWORD dwKeyState, POINTL pt, DWORD *pdwEffect);
+ virtual HRESULT WINAPI DragLeave();
+ virtual HRESULT WINAPI Drop(IDataObject *pDataObject, DWORD dwKeyState, POINTL pt, DWORD *pdwEffect);
// IShellExtInit
virtual HRESULT STDMETHODCALLTYPE Initialize(LPCITEMIDLIST pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID);
COM_INTERFACE_ENTRY_IID(IID_IShellFolder2, IShellFolder2)
COM_INTERFACE_ENTRY_IID(IID_IContextMenu, IContextMenu)
COM_INTERFACE_ENTRY_IID(IID_IShellPropSheetExt, IShellPropSheetExt)
+ COM_INTERFACE_ENTRY_IID(IID_IDropTarget, IDropTarget)
COM_INTERFACE_ENTRY_IID(IID_IShellExtInit, IShellExtInit)
END_COM_MAP()
};