2 * PROJECT: ReactOS Zip Shell Extension
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * PURPOSE: SendTo handler
5 * COPYRIGHT: Copyright 2019 Mark Jansen (mark.jansen@reactos.org)
6 * Copyright 2019 Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
9 #ifndef CSENDTOZIP_HPP_
10 #define CSENDTOZIP_HPP_
13 public CComCoClass<CSendToZip, &CLSID_ZipFolderSendTo>,
14 public CComObjectRootEx<CComMultiThreadModelNoCS>,
18 CComPtr<IDataObject> m_pDataObject;
22 CSendToZip() : m_fCanDragDrop(FALSE)
24 InterlockedIncrement(&g_ModuleRefCnt);
29 InterlockedDecrement(&g_ModuleRefCnt);
32 // *** IShellFolder2 methods ***
33 STDMETHODIMP DragEnter(IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
34 STDMETHODIMP DragOver(DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
35 STDMETHODIMP DragLeave();
36 STDMETHODIMP Drop(IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
38 // *** IPersistFile methods ***
39 STDMETHODIMP IsDirty()
43 STDMETHODIMP Load(LPCOLESTR pszFileName, DWORD dwMode)
47 STDMETHODIMP Save(LPCOLESTR pszFileName, BOOL fRemember)
51 STDMETHODIMP SaveCompleted(LPCOLESTR pszFileName)
55 STDMETHODIMP GetCurFile(LPOLESTR *ppszFileName)
60 // *** IPersist methods ***
61 STDMETHODIMP GetClassID(CLSID *pclsid)
63 *pclsid = CLSID_ZipFolderSendTo;
68 DECLARE_NO_REGISTRY() // Handled manually
69 DECLARE_NOT_AGGREGATABLE(CSendToZip)
71 DECLARE_PROTECT_FINAL_CONSTRUCT()
73 BEGIN_COM_MAP(CSendToZip)
74 COM_INTERFACE_ENTRY_IID(IID_IDropTarget, IDropTarget)
75 COM_INTERFACE_ENTRY_IID(IID_IPersistFile, IPersistFile)
76 COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)