Sync with trunk r63430.
[reactos.git] / dll / win32 / shell32 / CMenuBand.h
1 #pragma once
2
3 class CMenuBand;
4
5 class CMenuStaticToolbar
6 {
7 public:
8 CMenuStaticToolbar(CMenuBand *menuBand);
9
10 HRESULT CreateToolbar(HWND hwndParent, DWORD dwFlags);
11 HRESULT FillToolbar();
12 HRESULT GetWindow(HWND *phwnd);
13 HRESULT SetMenu(HMENU hmenu, HWND hwnd, DWORD dwFlags);
14 HRESULT GetMenu(HMENU *phmenu, HWND *phwnd, DWORD *pdwFlags);
15 HRESULT ShowWindow(BOOL fShow);
16 HRESULT Close();
17
18 private:
19
20 static const UINT WM_USER_SHOWPOPUPMENU = WM_USER + 1;
21
22 CMenuBand *m_menuBand;
23 HWND m_hwnd;
24 HMENU m_hmenu;
25 HWND m_hwndOwner;
26 DWORD m_dwMenuFlags;
27 };
28
29 class CMenuBand :
30 public CComCoClass<CMenuBand, &CLSID_MenuBand>,
31 public CComObjectRootEx<CComMultiThreadModelNoCS>,
32 public IDeskBand,
33 public IObjectWithSite,
34 public IInputObject,
35 public IPersistStream,
36 public IOleCommandTarget,
37 public IServiceProvider,
38 public IMenuPopup,
39 public IMenuBand,
40 public IShellMenu2,
41 public IWinEventHandler,
42 public IShellMenuAcc
43 {
44 public:
45 CMenuBand();
46 ~CMenuBand();
47
48 private:
49
50 IOleWindow *m_site;
51 CMenuStaticToolbar *m_staticToolbar;
52
53 IShellMenuCallback *m_psmc;
54 UINT m_uId;
55 UINT m_uIdAncestor;
56 DWORD m_dwFlags;
57 public :
58
59 // *** IDeskBand methods ***
60 virtual HRESULT STDMETHODCALLTYPE GetBandInfo(DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO *pdbi);
61
62 // *** IDockingWindow methods ***
63 virtual HRESULT STDMETHODCALLTYPE ShowDW(BOOL fShow);
64 virtual HRESULT STDMETHODCALLTYPE CloseDW(DWORD dwReserved);
65 virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW(LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved);
66
67 // *** IOleWindow methods ***
68 virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *phwnd);
69 virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
70
71 // *** IObjectWithSite methods ***
72 virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *pUnkSite);
73 virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, PVOID *ppvSite);
74
75 // *** IInputObject methods ***
76 virtual HRESULT STDMETHODCALLTYPE UIActivateIO(BOOL fActivate, LPMSG lpMsg);
77 virtual HRESULT STDMETHODCALLTYPE HasFocusIO();
78 virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(LPMSG lpMsg);
79
80 // *** IPersistStream methods ***
81 virtual HRESULT STDMETHODCALLTYPE IsDirty();
82 virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
83 virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
84 virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
85
86 // *** IPersist methods ***
87 virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
88
89 // *** IOleCommandTarget methods ***
90 virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText);
91 virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
92
93 // *** IServiceProvider methods ***
94 virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject);
95
96 // *** IMenuPopup methods ***
97 virtual HRESULT STDMETHODCALLTYPE Popup(POINTL *ppt, RECTL *prcExclude, MP_POPUPFLAGS dwFlags);
98 virtual HRESULT STDMETHODCALLTYPE OnSelect(DWORD dwSelectType);
99 virtual HRESULT STDMETHODCALLTYPE SetSubMenu(IMenuPopup *pmp, BOOL fSet);
100
101 // *** IDeskBar methods ***
102 virtual HRESULT STDMETHODCALLTYPE SetClient(IUnknown *punkClient);
103 virtual HRESULT STDMETHODCALLTYPE GetClient(IUnknown **ppunkClient);
104 virtual HRESULT STDMETHODCALLTYPE OnPosRectChangeDB(RECT *prc);
105
106 // *** IMenuBand methods ***
107 virtual HRESULT STDMETHODCALLTYPE IsMenuMessage(MSG *pmsg);
108 virtual HRESULT STDMETHODCALLTYPE TranslateMenuMessage(MSG *pmsg, LRESULT *plRet);
109
110 // *** IShellMenu methods ***
111 virtual HRESULT STDMETHODCALLTYPE Initialize(IShellMenuCallback *psmc, UINT uId, UINT uIdAncestor,DWORD dwFlags);
112 virtual HRESULT STDMETHODCALLTYPE GetMenuInfo(IShellMenuCallback **ppsmc, UINT *puId, UINT *puIdAncestor, DWORD *pdwFlags);
113 virtual HRESULT STDMETHODCALLTYPE SetShellFolder(IShellFolder *psf, LPCITEMIDLIST pidlFolder, HKEY hKey, DWORD dwFlags);
114 virtual HRESULT STDMETHODCALLTYPE GetShellFolder(DWORD *pdwFlags, LPITEMIDLIST *ppidl, REFIID riid, void **ppv);
115 virtual HRESULT STDMETHODCALLTYPE SetMenu(HMENU hmenu, HWND hwnd, DWORD dwFlags);
116 virtual HRESULT STDMETHODCALLTYPE GetMenu(HMENU *phmenu, HWND *phwnd, DWORD *pdwFlags);
117 virtual HRESULT STDMETHODCALLTYPE InvalidateItem(LPSMDATA psmd, DWORD dwFlags);
118 virtual HRESULT STDMETHODCALLTYPE GetState(LPSMDATA psmd);
119 virtual HRESULT STDMETHODCALLTYPE SetMenuToolbar(IUnknown *punk, DWORD dwFlags);
120
121 // *** IWinEventHandler methods ***
122 virtual HRESULT STDMETHODCALLTYPE OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult);
123 virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd);
124
125 // *** IShellMenu2 methods ***
126 virtual HRESULT STDMETHODCALLTYPE GetSubMenu(THIS);
127 virtual HRESULT STDMETHODCALLTYPE SetToolbar(THIS);
128 virtual HRESULT STDMETHODCALLTYPE SetMinWidth(THIS);
129 virtual HRESULT STDMETHODCALLTYPE SetNoBorder(THIS);
130 virtual HRESULT STDMETHODCALLTYPE SetTheme(THIS);
131
132 // *** IShellMenuAcc methods ***
133 virtual HRESULT STDMETHODCALLTYPE GetTop(THIS);
134 virtual HRESULT STDMETHODCALLTYPE GetBottom(THIS);
135 virtual HRESULT STDMETHODCALLTYPE GetTracked(THIS);
136 virtual HRESULT STDMETHODCALLTYPE GetParentSite(THIS);
137 virtual HRESULT STDMETHODCALLTYPE GetState(THIS);
138 virtual HRESULT STDMETHODCALLTYPE DoDefaultAction(THIS);
139 virtual HRESULT STDMETHODCALLTYPE IsEmpty(THIS);
140
141 DECLARE_REGISTRY_RESOURCEID(IDR_MENUBAND)
142 DECLARE_NOT_AGGREGATABLE(CMenuBand)
143 DECLARE_PROTECT_FINAL_CONSTRUCT()
144
145 BEGIN_COM_MAP(CMenuBand)
146 COM_INTERFACE_ENTRY_IID(IID_IDeskBar, IMenuPopup)
147 COM_INTERFACE_ENTRY_IID(IID_IShellMenu, IShellMenu)
148 COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
149 COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IDeskBand)
150 COM_INTERFACE_ENTRY_IID(IID_IDockingWindow, IDockingWindow)
151 COM_INTERFACE_ENTRY_IID(IID_IDeskBand, IDeskBand)
152 COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
153 COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
154 COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
155 COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersistStream)
156 COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
157 COM_INTERFACE_ENTRY_IID(IID_IMenuPopup, IMenuPopup)
158 COM_INTERFACE_ENTRY_IID(IID_IMenuBand, IMenuBand)
159 COM_INTERFACE_ENTRY_IID(IID_IShellMenu2, IShellMenu2)
160 COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler)
161 COM_INTERFACE_ENTRY_IID(IID_IShellMenuAcc, IShellMenuAcc)
162 END_COM_MAP()
163
164 };