[SHELL32]: Replace some animations with RLE-8 compressed ones; courtesy Jared Smudde...
[reactos.git] / reactos / dll / win32 / shell32 / COpenWithMenu.h
1 /*
2 * Open With Context Menu extension
3 *
4 * Copyright 2007 Johannes Anderwald <johannes.anderwald@reactos.org>
5 * Copyright 2009 Andrew Hill
6 * Copyright 2012 Rafal Harabien
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 */
22
23 #ifndef _SHE_OCMENU_H_
24 #define _SHE_OCMENU_H_
25
26 class COpenWithList;
27
28 class COpenWithMenu :
29 public CComCoClass<COpenWithMenu, &CLSID_OpenWithMenu>,
30 public CComObjectRootEx<CComMultiThreadModelNoCS>,
31 public IContextMenu2,
32 public IShellExtInit
33 {
34 private:
35 UINT m_idCmdFirst, m_idCmdLast;
36 WCHAR m_wszPath[MAX_PATH];
37 HMENU m_hSubMenu;
38 COpenWithList *m_pAppList;
39
40 HBITMAP IconToBitmap(HICON hIcon);
41 VOID AddChooseProgramItem();
42 VOID AddApp(PVOID pApp);
43
44 public:
45 COpenWithMenu();
46 ~COpenWithMenu();
47
48 // IContextMenu
49 virtual HRESULT WINAPI QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
50 virtual HRESULT WINAPI InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi);
51 virtual HRESULT WINAPI GetCommandString(UINT_PTR idCommand, UINT uFlags, UINT *lpReserved, LPSTR lpszName, UINT uMaxNameLen);
52
53 // IContextMenu2
54 virtual HRESULT WINAPI HandleMenuMsg(UINT uMsg, WPARAM wParam, LPARAM lParam);
55
56 // IShellExtInit
57 virtual HRESULT STDMETHODCALLTYPE Initialize(LPCITEMIDLIST pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID);
58
59 DECLARE_REGISTRY_RESOURCEID(IDR_OPENWITHMENU)
60 DECLARE_NOT_AGGREGATABLE(COpenWithMenu)
61
62 DECLARE_PROTECT_FINAL_CONSTRUCT()
63
64 BEGIN_COM_MAP(COpenWithMenu)
65 COM_INTERFACE_ENTRY_IID(IID_IContextMenu2, IContextMenu2)
66 COM_INTERFACE_ENTRY_IID(IID_IContextMenu, IContextMenu)
67 COM_INTERFACE_ENTRY_IID(IID_IShellExtInit, IShellExtInit)
68 END_COM_MAP()
69 };
70
71 #endif /* _SHE_OCMENU_H_ */