1 /* 2 * Shell AutoComplete list 3 * 4 * Copyright 2015 Thomas Faber 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 #pragma once 22 23 class CACListISF : 24 public CComCoClass<CACListISF, &CLSID_ACListISF>, 25 public CComObjectRootEx<CComMultiThreadModelNoCS>, 26 public IEnumString, 27 public IACList2, 28 public IShellService, 29 public IPersistFolder 30 { 31 private: 32 DWORD m_dwOptions; 33 34 public: 35 CACListISF(); 36 ~CACListISF(); 37 38 // *** IEnumString methods *** 39 virtual HRESULT STDMETHODCALLTYPE Next(ULONG celt, LPOLESTR *rgelt, ULONG *pceltFetched); 40 virtual HRESULT STDMETHODCALLTYPE Skip(ULONG celt); 41 virtual HRESULT STDMETHODCALLTYPE Reset(); 42 virtual HRESULT STDMETHODCALLTYPE Clone(IEnumString **ppenum); 43 44 // *** IACList methods *** 45 virtual HRESULT STDMETHODCALLTYPE Expand(LPCOLESTR pszExpand); 46 47 // *** IACList2 methods *** 48 virtual HRESULT STDMETHODCALLTYPE SetOptions(DWORD dwFlag); 49 virtual HRESULT STDMETHODCALLTYPE GetOptions(DWORD* pdwFlag); 50 51 // *** IShellService methods *** 52 virtual HRESULT STDMETHODCALLTYPE SetOwner(IUnknown *); 53 54 // *** IPersist methods *** 55 virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID); 56 57 // *** IPersistFolder methods *** 58 virtual HRESULT STDMETHODCALLTYPE Initialize(LPCITEMIDLIST pidl); 59 60 public: 61 62 DECLARE_REGISTRY_RESOURCEID(IDR_ACLISTISF) 63 DECLARE_NOT_AGGREGATABLE(CACListISF) 64 65 DECLARE_PROTECT_FINAL_CONSTRUCT() 66 67 BEGIN_COM_MAP(CACListISF) 68 COM_INTERFACE_ENTRY_IID(IID_IEnumString, IEnumString) 69 COM_INTERFACE_ENTRY_IID(IID_IACList, IACList) 70 COM_INTERFACE_ENTRY_IID(IID_IACList2, IACList2) 71 COM_INTERFACE_ENTRY_IID(IID_IShellService, IShellService) 72 // Windows doesn't return this 73 //COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist) 74 COM_INTERFACE_ENTRY_IID(IID_IPersistFolder, IPersistFolder) 75 END_COM_MAP() 76 }; 77