ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

startmenu.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.