Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenstartmenu.cpp
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 #include <precomp.h> 00022 00023 WINE_DEFAULT_DEBUG_CHANNEL(shell32start); 00024 00025 CStartMenu::CStartMenu() 00026 { 00027 m_pBandSite = NULL; 00028 m_pUnkSite = NULL; 00029 } 00030 00031 CStartMenu::~CStartMenu() 00032 { 00033 } 00034 00035 HRESULT STDMETHODCALLTYPE CStartMenu::ContextSensitiveHelp(BOOL fEnterMode) 00036 { 00037 UNIMPLEMENTED; 00038 return E_NOTIMPL; 00039 } 00040 00041 HRESULT STDMETHODCALLTYPE CStartMenu::GetWindow(HWND *phwnd) 00042 { 00043 UNIMPLEMENTED; 00044 return E_NOTIMPL; 00045 } 00046 00047 HRESULT STDMETHODCALLTYPE CStartMenu::GetClient(IUnknown **ppunkClient) 00048 { 00049 TRACE("(%p, %p)\n", this, ppunkClient); 00050 00051 *ppunkClient = (IUnknown*)m_pBandSite; 00052 (*ppunkClient)->AddRef(); 00053 return S_OK; 00054 } 00055 00056 HRESULT STDMETHODCALLTYPE CStartMenu::OnPosRectChangeDB(LPRECT prc) 00057 { 00058 UNIMPLEMENTED; 00059 return E_NOTIMPL; 00060 } 00061 00062 HRESULT STDMETHODCALLTYPE CStartMenu::SetClient(IUnknown *punkClient) 00063 { 00064 UNIMPLEMENTED; 00065 return E_NOTIMPL; 00066 } 00067 00068 HRESULT STDMETHODCALLTYPE CStartMenu::OnSelect(DWORD dwSelectType) 00069 { 00070 UNIMPLEMENTED; 00071 return E_NOTIMPL; 00072 } 00073 00074 HRESULT STDMETHODCALLTYPE CStartMenu::Popup(POINTL *ppt, RECTL *prcExclude, MP_POPUPFLAGS dwFlags) 00075 { 00076 UNIMPLEMENTED; 00077 return E_NOTIMPL; 00078 } 00079 00080 HRESULT STDMETHODCALLTYPE CStartMenu::SetSubMenu(IMenuPopup *pmp, BOOL fSet) 00081 { 00082 UNIMPLEMENTED; 00083 return E_NOTIMPL; 00084 } 00085 00086 HRESULT STDMETHODCALLTYPE CStartMenu::SetSite(IUnknown *pUnkSite) 00087 { 00088 TRACE("(%p, %p)\n", this, pUnkSite); 00089 00090 if (m_pUnkSite) 00091 m_pUnkSite->Release(); 00092 m_pUnkSite = pUnkSite; 00093 if (m_pUnkSite) 00094 m_pUnkSite->AddRef(); 00095 return S_OK; 00096 } 00097 00098 HRESULT STDMETHODCALLTYPE CStartMenu::GetSite(REFIID riid, void **ppvSite) 00099 { 00100 TRACE("(%p, %s, %p)\n", this, debugstr_guid(&riid), ppvSite); 00101 00102 if (!m_pUnkSite) 00103 return E_FAIL; 00104 00105 return m_pUnkSite->QueryInterface(riid, ppvSite); 00106 } 00107 00108 HRESULT STDMETHODCALLTYPE CStartMenu::Initialize() 00109 { 00110 HRESULT hr; 00111 CComObject<CMenuBandSite> *pBandSiteObj; 00112 00113 TRACE("(%p)\n", this); 00114 00115 //pBandSiteObj = new CComObject<CMenuBandSite>(); 00116 ATLTRY (pBandSiteObj = new CComObject<CMenuBandSite>); 00117 if (pBandSiteObj == NULL) 00118 return E_OUTOFMEMORY; 00119 00120 hr = pBandSiteObj->QueryInterface(IID_IBandSite, (VOID**)&m_pBandSite); 00121 if (FAILED(hr)) 00122 return NULL; 00123 00124 return m_pBandSite->AddBand((IMenuBand*)this); 00125 } 00126 00127 HRESULT STDMETHODCALLTYPE CStartMenu::IsMenuMessage(MSG *pmsg) 00128 { 00129 UNIMPLEMENTED; 00130 return E_NOTIMPL; 00131 } 00132 00133 HRESULT STDMETHODCALLTYPE CStartMenu::TranslateMenuMessage(MSG *pmsg, LRESULT *plRet) 00134 { 00135 UNIMPLEMENTED; 00136 return E_NOTIMPL; 00137 } 00138 00139 CMenuBandSite::CMenuBandSite() 00140 { 00141 m_pObjects = NULL; 00142 m_cObjects = 0; 00143 } 00144 00145 CMenuBandSite::~CMenuBandSite() 00146 { 00147 } 00148 00149 HRESULT STDMETHODCALLTYPE CMenuBandSite::AddBand(IUnknown *punk) 00150 { 00151 IUnknown **pObjects; 00152 00153 TRACE("punk %p\n", punk); 00154 00155 if (!punk) 00156 return E_FAIL; 00157 00158 pObjects = (IUnknown**)CoTaskMemAlloc(sizeof(IUnknown*) * (m_cObjects + 1)); 00159 if (!pObjects) 00160 return E_FAIL; 00161 00162 RtlMoveMemory(pObjects, m_pObjects, sizeof(IUnknown*) * m_cObjects); 00163 00164 CoTaskMemFree(m_pObjects); 00165 00166 m_pObjects = pObjects; 00167 00168 m_pObjects[m_cObjects] = punk; 00169 punk->AddRef(); 00170 00171 m_cObjects++; 00172 00173 return S_OK; 00174 } 00175 00176 HRESULT STDMETHODCALLTYPE CMenuBandSite::EnumBands(UINT uBand, DWORD *pdwBandID) 00177 { 00178 ULONG Index, ObjectCount; 00179 00180 TRACE("uBand %uu pdwBandID %p\n", uBand, pdwBandID); 00181 00182 if (uBand == (UINT)-1) 00183 return m_cObjects; 00184 00185 ObjectCount = 0; 00186 00187 for(Index = 0; Index < m_cObjects; Index++) 00188 { 00189 if (m_pObjects[Index] != NULL) 00190 { 00191 if (uBand == ObjectCount) 00192 { 00193 *pdwBandID = Index; 00194 return S_OK; 00195 } 00196 ObjectCount++; 00197 } 00198 } 00199 return E_FAIL; 00200 } 00201 00202 HRESULT STDMETHODCALLTYPE CMenuBandSite::QueryBand(DWORD dwBandID, IDeskBand **ppstb, DWORD *pdwState, LPWSTR pszName, int cchName) 00203 { 00204 UNIMPLEMENTED; 00205 return E_NOTIMPL; 00206 } 00207 00208 HRESULT STDMETHODCALLTYPE CMenuBandSite::SetBandState(DWORD dwBandID, DWORD dwMask, DWORD dwState) 00209 { 00210 UNIMPLEMENTED; 00211 return E_NOTIMPL; 00212 } 00213 00214 HRESULT STDMETHODCALLTYPE CMenuBandSite::RemoveBand(DWORD dwBandID) 00215 { 00216 TRACE("dwBandID %u\n", dwBandID); 00217 00218 if (m_cObjects <= dwBandID) 00219 return E_FAIL; 00220 00221 if (m_pObjects[dwBandID]) 00222 { 00223 m_pObjects[dwBandID]->Release(); 00224 m_pObjects[dwBandID] = NULL; 00225 } 00226 00227 return S_OK; 00228 } 00229 00230 HRESULT STDMETHODCALLTYPE CMenuBandSite::GetBandObject(DWORD dwBandID, REFIID riid, VOID **ppv) 00231 { 00232 TRACE("dwBandID %u riid %p ppv %p\n", dwBandID, riid, ppv); 00233 00234 if (m_cObjects <= dwBandID) 00235 return E_FAIL; 00236 00237 if (m_pObjects[dwBandID]) 00238 { 00239 return m_pObjects[dwBandID]->QueryInterface(riid, ppv); 00240 } 00241 00242 return E_FAIL; 00243 } 00244 00245 HRESULT STDMETHODCALLTYPE CMenuBandSite::SetBandSiteInfo(const BANDSITEINFO *pbsinfo) 00246 { 00247 UNIMPLEMENTED; 00248 return E_NOTIMPL; 00249 } 00250 00251 HRESULT STDMETHODCALLTYPE CMenuBandSite::GetBandSiteInfo(BANDSITEINFO *pbsinfo) 00252 { 00253 UNIMPLEMENTED; 00254 return E_NOTIMPL; 00255 } 00256 00257 HRESULT STDMETHODCALLTYPE CMenuBandSite::GetWindow(HWND *phwnd) 00258 { 00259 UNIMPLEMENTED; 00260 return E_NOTIMPL; 00261 } 00262 00263 HRESULT STDMETHODCALLTYPE CMenuBandSite::ContextSensitiveHelp(BOOL fEnterMode) 00264 { 00265 UNIMPLEMENTED; 00266 return E_NOTIMPL; 00267 } 00268 00269 HRESULT STDMETHODCALLTYPE CMenuBandSite::SetDeskBarSite(IUnknown *punkSite) 00270 { 00271 UNIMPLEMENTED; 00272 return E_NOTIMPL; 00273 } 00274 00275 HRESULT STDMETHODCALLTYPE CMenuBandSite::SetModeDBC(DWORD dwMode) 00276 { 00277 UNIMPLEMENTED; 00278 return E_NOTIMPL; 00279 } 00280 00281 HRESULT STDMETHODCALLTYPE CMenuBandSite::UIActivateDBC(DWORD dwState) 00282 { 00283 UNIMPLEMENTED; 00284 return E_NOTIMPL; 00285 } 00286 00287 HRESULT STDMETHODCALLTYPE CMenuBandSite::GetSize(DWORD dwWhich, LPRECT prc) 00288 { 00289 UNIMPLEMENTED; 00290 return E_NOTIMPL; 00291 } 00292 00293 HRESULT STDMETHODCALLTYPE CMenuBandSite::QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText) 00294 { 00295 UNIMPLEMENTED; 00296 return E_NOTIMPL; 00297 } 00298 00299 HRESULT STDMETHODCALLTYPE CMenuBandSite::Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut) 00300 { 00301 UNIMPLEMENTED; 00302 return E_NOTIMPL; 00303 } 00304 00305 HRESULT STDMETHODCALLTYPE CMenuBandSite::UIActivateIO(BOOL fActivate, LPMSG lpMsg) 00306 { 00307 UNIMPLEMENTED; 00308 return E_NOTIMPL; 00309 } 00310 00311 HRESULT STDMETHODCALLTYPE CMenuBandSite::HasFocusIO() 00312 { 00313 UNIMPLEMENTED; 00314 return E_NOTIMPL; 00315 } 00316 00317 HRESULT STDMETHODCALLTYPE CMenuBandSite::TranslateAcceleratorIO(LPMSG lpMsg) 00318 { 00319 UNIMPLEMENTED; 00320 return E_NOTIMPL; 00321 } 00322 00323 HRESULT STDMETHODCALLTYPE CMenuBandSite::OnFocusChangeIS(IUnknown *punkObj, BOOL fSetFocus) 00324 { 00325 UNIMPLEMENTED; 00326 return E_NOTIMPL; 00327 } 00328 00329 HRESULT STDMETHODCALLTYPE CMenuBandSite::OnWinEvent(HWND paramC, UINT param10, WPARAM param14, LPARAM param18, LRESULT *param1C) 00330 { 00331 UNIMPLEMENTED; 00332 return E_NOTIMPL; 00333 } 00334 00335 HRESULT STDMETHODCALLTYPE CMenuBandSite::IsWindowOwner(HWND paramC) 00336 { 00337 UNIMPLEMENTED; 00338 return E_NOTIMPL; 00339 } 00340 00341 HRESULT STDMETHODCALLTYPE CMenuBandSite::QueryService(REFGUID guidService, REFIID riid, void **ppvObject) 00342 { 00343 UNIMPLEMENTED; 00344 return E_NOTIMPL; 00345 } Generated on Sun May 27 2012 04:18:38 for ReactOS by
1.7.6.1
|