Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenstartmenu.h
Go to the documentation of this file.
00001 /* 00002 * Start menu object 00003 * 00004 * Copyright 2009 Andrew Hill 00005 * 00006 * This library is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU Lesser General Public 00008 * License as published by the Free Software Foundation; either 00009 * version 2.1 of the License, or (at your option) any later version. 00010 * 00011 * This library is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 * Lesser General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU Lesser General Public 00017 * License along with this library; if not, write to the Free Software 00018 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 00019 */ 00020 00021 #ifndef _STARTMENU_H_ 00022 #define _STARTMENU_H_ 00023 00024 class CStartMenu : 00025 public CComCoClass<CStartMenu, &CLSID_StartMenu>, 00026 public CComObjectRootEx<CComMultiThreadModelNoCS>, 00027 public IMenuPopup, 00028 public IObjectWithSite, 00029 public IInitializeObject, 00030 public IMenuBand // FIXME 00031 { 00032 private: 00033 IBandSite *m_pBandSite; 00034 IUnknown *m_pUnkSite; 00035 00036 public: 00037 CStartMenu(); 00038 ~CStartMenu(); 00039 00040 // *** IOleWindow methods *** 00041 virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode); 00042 virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *phwnd); 00043 00044 // *** IDeskBar methods *** 00045 virtual HRESULT STDMETHODCALLTYPE GetClient(IUnknown **ppunkClient); 00046 virtual HRESULT STDMETHODCALLTYPE OnPosRectChangeDB(LPRECT prc); 00047 virtual HRESULT STDMETHODCALLTYPE SetClient(IUnknown *punkClient); 00048 00049 // *** IMenuPopup methods *** 00050 virtual HRESULT STDMETHODCALLTYPE OnSelect(DWORD dwSelectType); 00051 virtual HRESULT STDMETHODCALLTYPE Popup(POINTL *ppt, RECTL *prcExclude, MP_POPUPFLAGS dwFlags); 00052 virtual HRESULT STDMETHODCALLTYPE SetSubMenu(IMenuPopup *pmp, BOOL fSet); 00053 00054 // *** IObjectWithSite methods *** 00055 virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *pUnkSite); 00056 virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, void **ppvSite); 00057 00058 // *** IInitializeObject methods *** 00059 virtual HRESULT STDMETHODCALLTYPE Initialize(); 00060 00061 // *** IMenuBand methods *** FIXME 00062 virtual HRESULT STDMETHODCALLTYPE IsMenuMessage(MSG *pmsg); 00063 virtual HRESULT STDMETHODCALLTYPE TranslateMenuMessage(MSG *pmsg, LRESULT *plRet); 00064 00065 DECLARE_REGISTRY_RESOURCEID(IDR_STARTMENU) 00066 DECLARE_NOT_AGGREGATABLE(CStartMenu) 00067 00068 DECLARE_PROTECT_FINAL_CONSTRUCT() 00069 00070 BEGIN_COM_MAP(CStartMenu) 00071 COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IOleWindow) 00072 COM_INTERFACE_ENTRY_IID(IID_IDeskBar, IDeskBar) 00073 COM_INTERFACE_ENTRY_IID(IID_IMenuPopup, IMenuPopup) 00074 COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite) 00075 COM_INTERFACE_ENTRY_IID(IID_IInitializeObject, IInitializeObject) 00076 COM_INTERFACE_ENTRY_IID(IID_IMenuBand, IMenuBand) // FIXME: Win does not export it 00077 END_COM_MAP() 00078 }; 00079 00080 class CMenuBandSite : 00081 public CComCoClass<CMenuBandSite, &CLSID_MenuBandSite>, 00082 public CComObjectRootEx<CComMultiThreadModelNoCS>, 00083 public IBandSite, 00084 public IDeskBarClient, 00085 public IOleCommandTarget, 00086 public IInputObject, 00087 public IInputObjectSite, 00088 public IWinEventHandler, 00089 public IServiceProvider 00090 { 00091 private: 00092 IUnknown **m_pObjects; 00093 ULONG m_cObjects; 00094 00095 public: 00096 CMenuBandSite(); 00097 ~CMenuBandSite(); 00098 00099 // *** IBandSite methods *** 00100 virtual HRESULT STDMETHODCALLTYPE AddBand(IUnknown *punk); 00101 virtual HRESULT STDMETHODCALLTYPE EnumBands(UINT uBand, DWORD *pdwBandID); 00102 virtual HRESULT STDMETHODCALLTYPE QueryBand(DWORD dwBandID, IDeskBand **ppstb, DWORD *pdwState, LPWSTR pszName, int cchName); 00103 virtual HRESULT STDMETHODCALLTYPE SetBandState(DWORD dwBandID, DWORD dwMask, DWORD dwState); 00104 virtual HRESULT STDMETHODCALLTYPE RemoveBand(DWORD dwBandID); 00105 virtual HRESULT STDMETHODCALLTYPE GetBandObject(DWORD dwBandID, REFIID riid, VOID **ppv); 00106 virtual HRESULT STDMETHODCALLTYPE SetBandSiteInfo(const BANDSITEINFO *pbsinfo); 00107 virtual HRESULT STDMETHODCALLTYPE GetBandSiteInfo(BANDSITEINFO *pbsinfo); 00108 00109 // *** IOleWindow methods *** 00110 virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *phwnd); 00111 virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode); 00112 00113 // *** IDeskBarClient methods *** 00114 virtual HRESULT STDMETHODCALLTYPE SetDeskBarSite(IUnknown *punkSite); 00115 virtual HRESULT STDMETHODCALLTYPE SetModeDBC(DWORD dwMode); 00116 virtual HRESULT STDMETHODCALLTYPE UIActivateDBC(DWORD dwState); 00117 virtual HRESULT STDMETHODCALLTYPE GetSize(DWORD dwWhich, LPRECT prc); 00118 00119 // *** IOleCommandTarget methods *** 00120 virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText); 00121 virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut); 00122 00123 // *** IInputObject methods *** 00124 virtual HRESULT STDMETHODCALLTYPE UIActivateIO(BOOL fActivate, LPMSG lpMsg); 00125 virtual HRESULT STDMETHODCALLTYPE HasFocusIO(); 00126 virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(LPMSG lpMsg); 00127 00128 // *** IInputObjectSite methods *** 00129 virtual HRESULT STDMETHODCALLTYPE OnFocusChangeIS(IUnknown *punkObj, BOOL fSetFocus); 00130 00131 // *** IWinEventHandler methods *** 00132 virtual HRESULT STDMETHODCALLTYPE OnWinEvent(HWND paramC, UINT param10, WPARAM param14, LPARAM param18, LRESULT *param1C); 00133 virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND paramC); 00134 00135 // *** IServiceProvider methods *** 00136 virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject); 00137 00138 DECLARE_REGISTRY_RESOURCEID(IDR_MENUBANDSITE) 00139 DECLARE_NOT_AGGREGATABLE(CMenuBandSite) 00140 00141 DECLARE_PROTECT_FINAL_CONSTRUCT() 00142 00143 BEGIN_COM_MAP(CMenuBandSite) 00144 COM_INTERFACE_ENTRY_IID(IID_IBandSite, IBandSite) 00145 COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IOleWindow) 00146 COM_INTERFACE_ENTRY_IID(IID_IDeskBarClient, IDeskBarClient) 00147 COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget) 00148 COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject) 00149 COM_INTERFACE_ENTRY_IID(IID_IInputObjectSite, IInputObjectSite) 00150 COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler) 00151 COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider) 00152 END_COM_MAP() 00153 }; 00154 00155 #endif // _STARTMENU_H_ Generated on Sun May 27 2012 04:18:38 for ReactOS by
1.7.6.1
|