2 * Shell AutoComplete list
4 * Copyright 2015 Thomas Faber
5 * Copyright 2020 Katayama Hirofumi MZ
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
25 public CComCoClass
<CACListISF
, &CLSID_ACListISF
>,
26 public CComObjectRootEx
<CComMultiThreadModelNoCS
>,
29 public ICurrentWorkingDirectory
,
44 LOCATION_TYPE m_iNextLocation
;
47 CComHeapPtr
<ITEMIDLIST
> m_pidlLocation
;
48 CComHeapPtr
<ITEMIDLIST
> m_pidlCurDir
;
49 CComPtr
<IEnumIDList
> m_pEnumIDList
;
50 CComPtr
<IShellFolder
> m_pShellFolder
;
51 CComPtr
<IBrowserService
> m_pBrowserService
;
57 HRESULT
NextLocation();
58 HRESULT
SetLocation(LPITEMIDLIST pidl
);
59 HRESULT
GetDisplayName(LPCITEMIDLIST pidlChild
, CComHeapPtr
<WCHAR
>& pszChild
);
60 HRESULT
GetPathName(LPCITEMIDLIST pidlChild
, CComHeapPtr
<WCHAR
>& pszPath
);
62 // *** IEnumString methods ***
63 STDMETHODIMP
Next(ULONG celt
, LPOLESTR
*rgelt
, ULONG
*pceltFetched
) override
;
64 STDMETHODIMP
Skip(ULONG celt
) override
;
65 STDMETHODIMP
Reset() override
;
66 STDMETHODIMP
Clone(IEnumString
**ppenum
) override
;
68 // *** IACList methods ***
69 STDMETHODIMP
Expand(LPCOLESTR pszExpand
) override
;
71 // *** IACList2 methods ***
72 STDMETHODIMP
SetOptions(DWORD dwFlag
) override
;
73 STDMETHODIMP
GetOptions(DWORD
* pdwFlag
) override
;
75 // FIXME: These virtual keywords below should be removed.
77 // *** IShellService methods ***
78 virtual STDMETHODIMP
SetOwner(IUnknown
*punkOwner
) override
;
80 // *** IPersist methods ***
81 virtual STDMETHODIMP
GetClassID(CLSID
*pClassID
) override
;
83 // *** IPersistFolder methods ***
84 virtual STDMETHODIMP
Initialize(PCIDLIST_ABSOLUTE pidl
) override
;
86 // *** ICurrentWorkingDirectory methods ***
87 STDMETHODIMP
GetDirectory(LPWSTR pwzPath
, DWORD cchSize
) override
;
88 STDMETHODIMP
SetDirectory(LPCWSTR pwzPath
) override
;
91 DECLARE_REGISTRY_RESOURCEID(IDR_ACLISTISF
)
92 DECLARE_NOT_AGGREGATABLE(CACListISF
)
94 DECLARE_PROTECT_FINAL_CONSTRUCT()
96 BEGIN_COM_MAP(CACListISF
)
97 COM_INTERFACE_ENTRY_IID(IID_IEnumString
, IEnumString
)
98 COM_INTERFACE_ENTRY_IID(IID_IACList
, IACList
)
99 COM_INTERFACE_ENTRY_IID(IID_IACList2
, IACList2
)
100 COM_INTERFACE_ENTRY_IID(IID_IShellService
, IShellService
)
101 // Windows doesn't return this
102 //COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
103 COM_INTERFACE_ENTRY_IID(IID_IPersistFolder
, IPersistFolder
)
104 COM_INTERFACE_ENTRY_IID(IID_ICurrentWorkingDirectory
, ICurrentWorkingDirectory
)