[SHELL32]
[reactos.git] / reactos / dll / win32 / shell32 / autocomplete.h
1 /*
2 * AutoComplete interfaces implementation.
3 *
4 * Copyright 2004 Maxime Bellengé <maxime.bellenge@laposte.net>
5 * Copyright 2009 Andrew Hill
6 *
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.
11 *
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.
16 *
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
20 */
21
22 #ifndef _AUTOCOMPLETE_H_
23 #define _AUTOCOMPLETE_H_
24
25 class CAutoComplete :
26 public CComCoClass<CAutoComplete, &CLSID_AutoComplete>,
27 public CComObjectRootEx<CComMultiThreadModelNoCS>,
28 public IAutoComplete2
29 {
30 private:
31 BOOL enabled;
32 HWND hwndEdit;
33 HWND hwndListBox;
34 WNDPROC wpOrigEditProc;
35 WNDPROC wpOrigLBoxProc;
36 WCHAR *txtbackup;
37 WCHAR *quickComplete;
38 CComPtr<IEnumString> enumstr;
39 AUTOCOMPLETEOPTIONS options;
40 public:
41
42 CAutoComplete();
43 ~CAutoComplete();
44
45 static LRESULT APIENTRY ACEditSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
46 static LRESULT APIENTRY ACLBoxSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
47
48 // IAutoComplete2
49 virtual HRESULT WINAPI Enable(BOOL fEnable);
50 virtual HRESULT WINAPI Init(HWND hwndEdit, IUnknown *punkACL, LPCOLESTR pwzsRegKeyPath, LPCOLESTR pwszQuickComplete);
51 virtual HRESULT WINAPI GetOptions(DWORD *pdwFlag);
52 virtual HRESULT WINAPI SetOptions(DWORD dwFlag);
53
54 DECLARE_REGISTRY_RESOURCEID(IDR_AUTOCOMPLETE)
55 DECLARE_NOT_AGGREGATABLE(CAutoComplete)
56
57 DECLARE_PROTECT_FINAL_CONSTRUCT()
58
59 BEGIN_COM_MAP(CAutoComplete)
60 COM_INTERFACE_ENTRY_IID(IID_IAutoComplete, IAutoComplete)
61 COM_INTERFACE_ENTRY_IID(IID_IAutoComplete2, IAutoComplete2)
62 END_COM_MAP()
63 };
64
65 #endif // _AUTOCOMPLETE_H_