1 /* 2 * Folder options. 3 * 4 * Copyright (C) 2016 Mark Jansen 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 19 */ 20 21 #ifndef _CFOLDEROPTIONS_H_ 22 #define _CFOLDEROPTIONS_H_ 23 24 class CFolderOptions : 25 public CComCoClass<CFolderOptions, &CLSID_ShellFldSetExt>, 26 public CComObjectRootEx<CComMultiThreadModelNoCS>, 27 public IShellPropSheetExt, 28 public IShellExtInit, 29 public IObjectWithSite 30 { 31 private: 32 CComPtr<IUnknown> m_pSite; 33 //LPITEMIDLIST pidl; 34 //INT iIdEmpty; 35 //UINT cfShellIDList; 36 //void SF_RegisterClipFmt(); 37 //BOOL fAcceptFmt; /* flag for pending Drop */ 38 //BOOL QueryDrop (DWORD dwKeyState, LPDWORD pdwEffect); 39 //BOOL RecycleBinIsEmpty(); 40 41 public: 42 CFolderOptions(); 43 ~CFolderOptions(); 44 45 // IShellPropSheetExt 46 virtual HRESULT STDMETHODCALLTYPE AddPages(LPFNSVADDPROPSHEETPAGE pfnAddPage, LPARAM lParam); 47 virtual HRESULT STDMETHODCALLTYPE ReplacePage(EXPPS uPageID, LPFNSVADDPROPSHEETPAGE pfnReplaceWith, LPARAM lParam); 48 49 // IShellExtInit 50 virtual HRESULT STDMETHODCALLTYPE Initialize(PCIDLIST_ABSOLUTE pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID); 51 52 // IObjectWithSite 53 virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *pUnkSite); 54 virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, void **ppvSite); 55 56 DECLARE_REGISTRY_RESOURCEID(IDR_FOLDEROPTIONS) 57 DECLARE_NOT_AGGREGATABLE(CFolderOptions) 58 59 DECLARE_PROTECT_FINAL_CONSTRUCT() 60 61 BEGIN_COM_MAP(CFolderOptions) 62 COM_INTERFACE_ENTRY_IID(IID_IShellPropSheetExt, IShellPropSheetExt) 63 COM_INTERFACE_ENTRY_IID(IID_IShellExtInit, IShellExtInit) 64 COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite) 65 END_COM_MAP() 66 }; 67 68 #endif /* _CFOLDEROPTIONS_H_ */ 69