public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IShellFolder2,
public IPersistFolder2,
- public IDropTarget,
- public ISFHelper
+ public IContextMenuCB
{
private:
/* both paths are parsible from the desktop */
+ CComPtr<IShellFolder2> m_DesktopFSFolder;
+ CComPtr<IShellFolder2> m_SharedDesktopFSFolder;
+ CComPtr<IShellFolder2> m_regFolder;
+
LPWSTR sPathTarget; /* complete path to target used for enumeration and ChangeNotify */
LPITEMIDLIST pidlRoot; /* absolute pidl */
-
- UINT cfShellIDList; /* clipboardformat for IDropTarget */
- BOOL fAcceptFmt; /* flag for pending Drop */
- BOOL QueryDrop (DWORD dwKeyState, LPDWORD pdwEffect);
- void SF_RegisterClipFmt();
- virtual HRESULT WINAPI _GetDropTarget(LPCITEMIDLIST pidl, LPVOID *ppvOut);
+
+ HRESULT _GetSFFromPidl(LPCITEMIDLIST pidl, IShellFolder2** psf);
public:
CDesktopFolder();
virtual HRESULT WINAPI GetClassID(CLSID *lpClassId);
// *** IPersistFolder methods ***
- virtual HRESULT WINAPI Initialize(LPCITEMIDLIST pidl);
+ virtual HRESULT WINAPI Initialize(PCIDLIST_ABSOLUTE pidl);
// *** IPersistFolder2 methods ***
- virtual HRESULT WINAPI GetCurFolder(LPITEMIDLIST * pidl);
-
- // 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);
-
+ virtual HRESULT WINAPI GetCurFolder(PIDLIST_ABSOLUTE * pidl);
- // *** ISFHelper methods ***
- virtual HRESULT WINAPI GetUniqueName(LPWSTR pwszName, UINT uLen);
- virtual HRESULT WINAPI AddFolder(HWND hwnd, LPCWSTR pwszName, LPITEMIDLIST *ppidlOut);
- virtual HRESULT WINAPI DeleteItems(UINT cidl, LPCITEMIDLIST *apidl);
- virtual HRESULT WINAPI CopyItems(IShellFolder *pSFFrom, UINT cidl, LPCITEMIDLIST *apidl, BOOL bCopy);
+ // IContextMenuCB
+ virtual HRESULT WINAPI CallBack(IShellFolder *psf, HWND hwndOwner, IDataObject *pdtobj, UINT uMsg, WPARAM wParam, LPARAM lParam);
DECLARE_REGISTRY_RESOURCEID(IDR_SHELLDESKTOP)
- DECLARE_NOT_AGGREGATABLE(CDesktopFolder)
+ DECLARE_CENTRAL_INSTANCE_NOT_AGGREGATABLE(CDesktopFolder)
DECLARE_PROTECT_FINAL_CONSTRUCT()
COM_INTERFACE_ENTRY_IID(IID_IPersistFolder, IPersistFolder)
COM_INTERFACE_ENTRY_IID(IID_IPersistFolder2, IPersistFolder2)
COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
- COM_INTERFACE_ENTRY_IID(IID_IDropTarget, IDropTarget)
- COM_INTERFACE_ENTRY_IID(IID_ISFHelper, ISFHelper)
END_COM_MAP()
};