xref: /reactos/dll/win32/browseui/aclistisf.h (revision c2c66aff)
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