Author: dquintana
Date: Wed Dec 3 16:11:46 2014
New Revision: 65554
URL:
http://svn.reactos.org/svn/reactos?rev=65554&view=rev
Log:
[BROWSEUI]
* Add a stubbed CExplorerBand, which I will be using to investigate how the windows shell
implements the sidebar panels.
This will never be called in ReactOS because our shell view doesn't handle the buttons
for opening the sidebars, so it never asks the shell browser to open one.
CORE-8815
Added:
trunk/reactos/dll/win32/browseui/explorerband.cpp (with props)
trunk/reactos/dll/win32/browseui/explorerband.h (with props)
trunk/reactos/dll/win32/browseui/res/explorerband.rgs (with props)
Modified:
trunk/reactos/dll/win32/browseui/CMakeLists.txt
trunk/reactos/dll/win32/browseui/browseui.cpp
trunk/reactos/dll/win32/browseui/browseui.rc
trunk/reactos/dll/win32/browseui/precomp.h
trunk/reactos/dll/win32/browseui/resource.h
trunk/reactos/dll/win32/browseui/shellbrowser.cpp
Modified: trunk/reactos/dll/win32/browseui/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/browseui/CMakeLi…
==============================================================================
--- trunk/reactos/dll/win32/browseui/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/browseui/CMakeLists.txt [iso-8859-1] Wed Dec 3 16:11:46 2014
@@ -22,6 +22,7 @@
browseuiord.cpp
commonbrowser.cpp
desktopipc.cpp
+ explorerband.cpp
globalfoldersettings.cpp
internettoolbar.cpp
parsecmdline.cpp
Modified: trunk/reactos/dll/win32/browseui/browseui.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/browseui/browseu…
==============================================================================
--- trunk/reactos/dll/win32/browseui/browseui.cpp [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/browseui/browseui.cpp [iso-8859-1] Wed Dec 3 16:11:46 2014
@@ -38,6 +38,7 @@
OBJECT_ENTRY(CLSID_GlobalFolderSettings, CGlobalFolderSettings)
OBJECT_ENTRY(CLSID_InternetToolbar, CInternetToolbar)
OBJECT_ENTRY(CLSID_CRegTreeOptions, CRegTreeOptions)
+OBJECT_ENTRY(CLSID_ExplorerBand, CExplorerBand)
END_OBJECT_MAP()
CBrowseUIModule gModule;
Modified: trunk/reactos/dll/win32/browseui/browseui.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/browseui/browseu…
==============================================================================
--- trunk/reactos/dll/win32/browseui/browseui.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/browseui/browseui.rc [iso-8859-1] Wed Dec 3 16:11:46 2014
@@ -41,6 +41,7 @@
IDR_GLOBALFOLDERSETTINGS REGISTRY "res/globalfoldersettings.rgs"
IDR_INTERNETTOOLBAR REGISTRY "res/internettoolbar.rgs"
IDR_REGTREEOPTIONS REGISTRY "res/regtreeoptions.rgs"
+IDR_EXPLORERBAND REGISTRY "res/explorerband.rgs"
/*
* Everything specific to any language goes
Added: trunk/reactos/dll/win32/browseui/explorerband.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/browseui/explore…
==============================================================================
--- trunk/reactos/dll/win32/browseui/explorerband.cpp (added)
+++ trunk/reactos/dll/win32/browseui/explorerband.cpp [iso-8859-1] Wed Dec 3 16:11:46
2014
@@ -0,0 +1,698 @@
+#include "precomp.h"
+
+#if 1
+#undef UNIMPLEMENTED
+
+#define UNIMPLEMENTED DbgPrint("%s is UNIMPLEMENTED!\n", __FUNCTION__)
+#endif
+
+extern "C"
+HRESULT WINAPI CExplorerBand_Constructor(REFIID riid, LPVOID *ppv)
+{
+ return ShellObjectCreator<CExplorerBand>(riid, ppv);
+}
+
+CExplorerBand::CExplorerBand() :
+ m_internalBand(NULL),
+ m_internalDeskBand(NULL),
+ m_internalObjectWithSite(NULL),
+ m_internalInputObject(NULL),
+ m_internalPersistStream(NULL),
+ m_internalOleCommandTarget(NULL),
+ m_internalServiceProvider(NULL),
+ m_internalBandNavigate(NULL),
+ m_internalWinEventHandler(NULL),
+ m_internalNamespaceProxy(NULL),
+ m_internalDispatch(NULL),
+ m_OnWinEventShown(FALSE)
+{
+ HRESULT hResult = CoCreateInstance(CLSID_ExplorerBand, NULL, CLSCTX_INPROC_SERVER,
IID_PPV_ARG(IUnknown, &m_internalBand));
+ if (FAILED(hResult))
+ {
+ ERR("Could not create internal band (hr=%08lx).\n", hResult);
+ m_internalBand = NULL;
+ return;
+ }
+ hResult = m_internalBand->QueryInterface(IID_PPV_ARG(IDeskBand,
&m_internalDeskBand));
+ if (FAILED(hResult))
+ {
+ ERR("Could not obtain interface IDeskBand from internal band
(hr=%08lx).\n", hResult);
+ m_internalBand = NULL;
+ m_internalDeskBand = NULL;
+ return;
+ }
+ hResult = m_internalBand->QueryInterface(IID_PPV_ARG(IObjectWithSite,
&m_internalObjectWithSite));
+ if (FAILED(hResult))
+ {
+ ERR("Could not obtain interface IObjectWithSite from internal band
(hr=%08lx).\n", hResult);
+ m_internalBand = NULL;
+ m_internalDeskBand = NULL;
+ m_internalObjectWithSite = NULL;
+ return;
+ }
+ hResult = m_internalBand->QueryInterface(IID_PPV_ARG(IInputObject,
&m_internalInputObject));
+ if (FAILED(hResult))
+ {
+ ERR("Could not obtain interface IInputObject from internal band
(hr=%08lx).\n", hResult);
+ m_internalBand = NULL;
+ m_internalDeskBand = NULL;
+ m_internalObjectWithSite = NULL;
+ m_internalInputObject = NULL;
+ return;
+ }
+ hResult = m_internalBand->QueryInterface(IID_PPV_ARG(IPersistStream,
&m_internalPersistStream));
+ if (FAILED(hResult))
+ {
+ ERR("Could not obtain interface IPersistStream from internal band
(hr=%08lx).\n", hResult);
+ m_internalBand = NULL;
+ m_internalDeskBand = NULL;
+ m_internalObjectWithSite = NULL;
+ m_internalInputObject = NULL;
+ m_internalPersistStream = NULL;
+ return;
+ }
+ hResult = m_internalBand->QueryInterface(IID_PPV_ARG(IOleCommandTarget,
&m_internalOleCommandTarget));
+ if (FAILED(hResult))
+ {
+ ERR("Could not obtain interface IOleCommandTarget from internal band
(hr=%08lx).\n", hResult);
+ m_internalBand = NULL;
+ m_internalDeskBand = NULL;
+ m_internalObjectWithSite = NULL;
+ m_internalInputObject = NULL;
+ m_internalPersistStream = NULL;
+ m_internalOleCommandTarget = NULL;
+ return;
+ }
+ hResult = m_internalBand->QueryInterface(IID_PPV_ARG(IServiceProvider,
&m_internalServiceProvider));
+ if (FAILED(hResult))
+ {
+ ERR("Could not obtain interface IServiceProvider from internal band
(hr=%08lx).\n", hResult);
+ m_internalBand = NULL;
+ m_internalDeskBand = NULL;
+ m_internalObjectWithSite = NULL;
+ m_internalInputObject = NULL;
+ m_internalPersistStream = NULL;
+ m_internalOleCommandTarget = NULL;
+ m_internalServiceProvider = NULL;
+ return;
+ }
+ hResult = m_internalBand->QueryInterface(IID_PPV_ARG(IBandNavigate,
&m_internalBandNavigate));
+ if (FAILED(hResult))
+ {
+ ERR("Could not obtain interface IBandNavigate from internal band
(hr=%08lx).\n", hResult);
+ m_internalBand = NULL;
+ m_internalDeskBand = NULL;
+ m_internalObjectWithSite = NULL;
+ m_internalInputObject = NULL;
+ m_internalPersistStream = NULL;
+ m_internalOleCommandTarget = NULL;
+ m_internalServiceProvider = NULL;
+ m_internalBandNavigate = NULL;
+ return;
+ }
+ hResult = m_internalBand->QueryInterface(IID_PPV_ARG(IWinEventHandler,
&m_internalWinEventHandler));
+ if (FAILED(hResult))
+ {
+ ERR("Could not obtain interface IWinEventHandler from internal band
(hr=%08lx).\n", hResult);
+ m_internalBand = NULL;
+ m_internalDeskBand = NULL;
+ m_internalObjectWithSite = NULL;
+ m_internalInputObject = NULL;
+ m_internalPersistStream = NULL;
+ m_internalOleCommandTarget = NULL;
+ m_internalServiceProvider = NULL;
+ m_internalBandNavigate = NULL;
+ m_internalWinEventHandler = NULL;
+ return;
+ }
+ hResult = m_internalBand->QueryInterface(IID_PPV_ARG(INamespaceProxy,
&m_internalNamespaceProxy));
+ if (FAILED(hResult))
+ {
+ ERR("Could not obtain interface INamespaceProxy from internal band
(hr=%08lx).\n", hResult);
+ m_internalBand = NULL;
+ m_internalDeskBand = NULL;
+ m_internalObjectWithSite = NULL;
+ m_internalInputObject = NULL;
+ m_internalPersistStream = NULL;
+ m_internalOleCommandTarget = NULL;
+ m_internalServiceProvider = NULL;
+ m_internalBandNavigate = NULL;
+ m_internalWinEventHandler = NULL;
+ m_internalNamespaceProxy = NULL;
+ return;
+ }
+ hResult = m_internalBand->QueryInterface(IID_PPV_ARG(IDispatch,
&m_internalDispatch));
+ if (FAILED(hResult))
+ {
+ ERR("Could not obtain interface INamespaceProxy from internal band
(hr=%08lx).\n", hResult);
+ m_internalBand = NULL;
+ m_internalDeskBand = NULL;
+ m_internalObjectWithSite = NULL;
+ m_internalInputObject = NULL;
+ m_internalPersistStream = NULL;
+ m_internalOleCommandTarget = NULL;
+ m_internalServiceProvider = NULL;
+ m_internalBandNavigate = NULL;
+ m_internalWinEventHandler = NULL;
+ m_internalNamespaceProxy = NULL;
+ m_internalDispatch = NULL;
+ return;
+ }
+}
+
+CExplorerBand::~CExplorerBand()
+{
+}
+
+// *** IOleWindow methods ***
+HRESULT STDMETHODCALLTYPE CExplorerBand::GetWindow(HWND *lphwnd)
+{
+ HRESULT hr;
+ if (m_internalDeskBand)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::GetWindow(HWND
*lphwnd=%p)\n", lphwnd);
+ hr = m_internalDeskBand->GetWindow(lphwnd);
+ if (lphwnd)
+ DbgPrint("\t*lphwnd=%p\n", *lphwnd);
+ DbgPrint("CExplorerBand::GetWindow returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+HRESULT STDMETHODCALLTYPE CExplorerBand::ContextSensitiveHelp(BOOL fEnterMode)
+{
+ HRESULT hr;
+ if (m_internalDeskBand)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::ContextSensitiveHelp(BOOL
fEnterMode=%s)\n", fEnterMode ? "TRUE" : "FALSE");
+ hr = m_internalDeskBand->ContextSensitiveHelp(fEnterMode);
+ DbgPrint("CExplorerBand::ContextSensitiveHelp returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+
+// *** IDockingWindow methods ***
+HRESULT STDMETHODCALLTYPE CExplorerBand::CloseDW(DWORD dwReserved)
+{
+ HRESULT hr;
+ if (m_internalDeskBand)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::CloseDW(DWORD
dwReserved=%u)\n", dwReserved);
+ hr = m_internalDeskBand->CloseDW(dwReserved);
+ DbgPrint("CExplorerBand::CloseDW returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+HRESULT STDMETHODCALLTYPE CExplorerBand::ResizeBorderDW(const RECT *prcBorder, IUnknown
*punkToolbarSite, BOOL fReserved)
+{
+ HRESULT hr;
+ if (m_internalDeskBand)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::ResizeBorderDW(const RECT
*prcBorder=%p, IUnknown *punkToolbarSite=%p, BOOL fReserved=%s)\n",
+ prcBorder, punkToolbarSite, fReserved ? "TRUE" :
"FALSE");
+ if (prcBorder)
+ DbgPrint("\t*prcBorder={%u, %u, %u, %u}\n", prcBorder->left,
prcBorder->top, prcBorder->right, prcBorder->bottom);
+ hr = m_internalDeskBand->ResizeBorderDW(prcBorder, punkToolbarSite,
fReserved);
+ DbgPrint("CExplorerBand::ResizeBorderDW returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+HRESULT STDMETHODCALLTYPE CExplorerBand::ShowDW(BOOL fShow)
+{
+ HRESULT hr;
+ if (m_internalDeskBand)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::ShowDW(BOOL
fShow=%s)\n", fShow ? "TRUE" : "FALSE");
+ hr = m_internalDeskBand->ShowDW(fShow);
+ DbgPrint("CExplorerBand::ShowDW returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+
+// *** IDeskBand methods ***
+HRESULT STDMETHODCALLTYPE CExplorerBand::GetBandInfo(DWORD dwBandID, DWORD dwViewMode,
DESKBANDINFO *pdbi)
+{
+ HRESULT hr;
+ if (m_internalDeskBand)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::GetBandInfo(DWORD
dwBandID=%u, DWORD dwViewMode=%u, DESKBANDINFO *pdbi=%p)\n",
+ dwBandID, dwViewMode, pdbi);
+ if (pdbi)
+ DbgPrint("\t*pdbi={dwMask=%u, ...}\n", pdbi->dwMask);
+ hr = m_internalDeskBand->GetBandInfo(dwBandID, dwViewMode, pdbi);
+ if (pdbi)
+ DbgPrint("\t*pdbi={dwMask=%u, crBkgnd=%u, ...}\n", pdbi->dwMask,
pdbi->crBkgnd);
+ DbgPrint("CExplorerBand::GetBandInfo returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+
+// *** IObjectWithSite methods ***
+HRESULT STDMETHODCALLTYPE CExplorerBand::SetSite(IUnknown *pUnkSite)
+{
+ HRESULT hr;
+ if (m_internalObjectWithSite)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::SetSite(IUnknown
*pUnkSite=%p)\n", pUnkSite);
+ hr = m_internalObjectWithSite->SetSite(pUnkSite);
+ DbgPrint("CExplorerBand::SetSite returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+HRESULT STDMETHODCALLTYPE CExplorerBand::GetSite(REFIID riid, void **ppvSite)
+{
+ HRESULT hr;
+ if (m_internalObjectWithSite)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::GetSite(REFIID riid=%s,
void **ppvSite=%p)\n", wine_dbgstr_guid(&riid), ppvSite);
+ hr = m_internalObjectWithSite->GetSite(riid, ppvSite);
+ if (ppvSite)
+ DbgPrint("\t*ppvSite=%p\n", *ppvSite);
+ DbgPrint("CExplorerBand::GetSite returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+
+// *** IOleCommandTarget methods ***
+HRESULT STDMETHODCALLTYPE CExplorerBand::QueryStatus(const GUID *pguidCmdGroup, ULONG
cCmds, OLECMD prgCmds [], OLECMDTEXT *pCmdText)
+{
+ HRESULT hr;
+ if (m_internalOleCommandTarget)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::QueryStatus(const GUID
*pguidCmdGroup=%s, ULONG cCmds=%08x, OLECMD prgCmds []=%p, OLECMDTEXT
*pCmdText=%p)\n",
+ wine_dbgstr_guid(pguidCmdGroup), cCmds, prgCmds, pCmdText);
+ hr = m_internalOleCommandTarget->QueryStatus(pguidCmdGroup, cCmds, prgCmds,
pCmdText);
+ DbgPrint("CExplorerBand::QueryStatus returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+HRESULT STDMETHODCALLTYPE CExplorerBand::Exec(const GUID *pguidCmdGroup, DWORD nCmdID,
DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
+{
+ HRESULT hr;
+ if (m_internalOleCommandTarget)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::Exec(const GUID
*pguidCmdGroup=%s, DWORD nCmdID=%u, DWORD nCmdexecopt=%u, VARIANT *pvaIn=%p, VARIANT
*pvaOut=%p)\n",
+ wine_dbgstr_guid(pguidCmdGroup), nCmdID, nCmdexecopt, pvaIn, pvaOut);
+ hr = m_internalOleCommandTarget->Exec(pguidCmdGroup, nCmdID, nCmdexecopt,
pvaIn, pvaOut);
+ DbgPrint("CExplorerBand::Exec returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+
+// *** IServiceProvider methods ***
+HRESULT STDMETHODCALLTYPE CExplorerBand::QueryService(REFGUID guidService, REFIID riid,
void **ppvObject)
+{
+ HRESULT hr;
+ if (m_internalServiceProvider)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::QueryService(REFGUID
guidService=%s, REFIID riid=%s, void **ppvObject=%p)\n",
+ wine_dbgstr_guid(&guidService), wine_dbgstr_guid(&riid),
ppvObject);
+ hr = m_internalServiceProvider->QueryService(guidService, riid, ppvObject);
+ if (ppvObject)
+ DbgPrint("\t*ppvObject=%p\n", *ppvObject);
+ DbgPrint("CExplorerBand::QueryService returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+
+// *** IInputObject methods ***
+HRESULT STDMETHODCALLTYPE CExplorerBand::UIActivateIO(BOOL fActivate, LPMSG lpMsg)
+{
+ HRESULT hr;
+ if (m_internalInputObject)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::UIActivateIO(BOOL
fActivate=%s, LPMSG lpMsg=%p)\n",
+ fActivate ? "TRUE" : "FALSE", lpMsg);
+ hr = m_internalInputObject->UIActivateIO(fActivate, lpMsg);
+ if (lpMsg)
+ DbgPrint("\t*lpMsg={hwnd=%p, message=%x, wParam=%x, lParam=%x, time=%x,
pt={%u %u}}\n",
+ lpMsg->hwnd, lpMsg->message, lpMsg->wParam, lpMsg->lParam,
lpMsg->time, lpMsg->pt.x, lpMsg->pt.y);
+ DbgPrint("CExplorerBand::UIActivateIO returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+HRESULT STDMETHODCALLTYPE CExplorerBand::HasFocusIO()
+{
+ HRESULT hr;
+ if (m_internalInputObject)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::HasFocusIO()\n");
+ hr = m_internalInputObject->HasFocusIO();
+ DbgPrint("CExplorerBand::HasFocusIO returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+HRESULT STDMETHODCALLTYPE CExplorerBand::TranslateAcceleratorIO(LPMSG lpMsg)
+{
+ HRESULT hr;
+ if (m_internalInputObject)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE
CExplorerBand::TranslateAcceleratorIO(LPMSG lpMsg=%p)\n", lpMsg);
+ hr = m_internalInputObject->TranslateAcceleratorIO(lpMsg);
+ if (lpMsg)
+ DbgPrint("\t*lpMsg={hwnd=%p, message=%x, wParam=%x, lParam=%x, time=%x,
pt={%u %u}}\n",
+ lpMsg->hwnd, lpMsg->message, lpMsg->wParam, lpMsg->lParam,
lpMsg->time, lpMsg->pt.x, lpMsg->pt.y);
+ DbgPrint("CExplorerBand::TranslateAcceleratorIO returning %08lx\n",
hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+
+// *** IPersist methods ***
+HRESULT STDMETHODCALLTYPE CExplorerBand::GetClassID(CLSID *pClassID)
+{
+ HRESULT hr;
+ if (m_internalPersistStream)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::GetClassID(CLSID
*pClassID=%p)\n", pClassID);
+ hr = m_internalPersistStream->GetClassID(pClassID);
+ if (pClassID)
+ DbgPrint("\t*pClassID=%s\n", wine_dbgstr_guid(pClassID));
+ DbgPrint("CExplorerBand::GetClassID returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+
+// *** IPersistStream methods ***
+HRESULT STDMETHODCALLTYPE CExplorerBand::IsDirty()
+{
+ HRESULT hr;
+ if (m_internalPersistStream)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::IsDirty()\n");
+ hr = m_internalPersistStream->IsDirty();
+ DbgPrint("CExplorerBand::IsDirty returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+HRESULT STDMETHODCALLTYPE CExplorerBand::Load(IStream *pStm)
+{
+ HRESULT hr;
+ if (m_internalPersistStream)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::Load(IStream
*pStm=%p)\n", pStm);
+ hr = m_internalPersistStream->Load(pStm);
+ DbgPrint("CExplorerBand::Load returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+HRESULT STDMETHODCALLTYPE CExplorerBand::Save(IStream *pStm, BOOL fClearDirty)
+{
+ HRESULT hr;
+ if (m_internalPersistStream)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::Save(IStream *pStm=%p,
BOOL fClearDirty=%s)\n",
+ pStm, fClearDirty ? "TRUE" : "FALSE");
+ hr = m_internalPersistStream->Save(pStm, fClearDirty);
+ DbgPrint("CExplorerBand::Save returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+HRESULT STDMETHODCALLTYPE CExplorerBand::GetSizeMax(ULARGE_INTEGER *pcbSize)
+{
+ HRESULT hr;
+ if (m_internalPersistStream)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::GetSizeMax(ULARGE_INTEGER
*pcbSize=%p)\n", pcbSize);
+ hr = m_internalPersistStream->GetSizeMax(pcbSize);
+ if (pcbSize)
+ DbgPrint("\t*pcbSize=%llx\n", pcbSize->QuadPart);
+ DbgPrint("CExplorerBand::GetSizeMax returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+
+// *** IWinEventHandler methods ***
+HRESULT STDMETHODCALLTYPE CExplorerBand::OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam,
LPARAM lParam, LRESULT *theResult)
+{
+ HRESULT hr;
+ if (m_internalWinEventHandler)
+ {
+ if (m_OnWinEventShown)
+ return m_internalWinEventHandler->OnWinEvent(hWnd, uMsg, wParam, lParam,
theResult);
+ m_OnWinEventShown = TRUE;
+
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::OnWinEvent(HWND hWnd=%x,
UINT uMsg=%x, WPARAM wParam=%x, LPARAM lParam=%x, LRESULT *theResult=%p)\n",
+ hWnd, uMsg, wParam, lParam, theResult);
+ hr = m_internalWinEventHandler->OnWinEvent(hWnd, uMsg, wParam, lParam,
theResult);
+ if (theResult)
+ DbgPrint("\t*theResult=%x\n", *theResult);
+ DbgPrint("CExplorerBand::OnWinEvent returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+HRESULT STDMETHODCALLTYPE CExplorerBand::IsWindowOwner(HWND hWnd)
+{
+ HRESULT hr;
+ if (m_internalWinEventHandler)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::IsWindowOwner(HWND
hWnd=%x)\n", hWnd);
+ hr = m_internalWinEventHandler->IsWindowOwner(hWnd);
+ DbgPrint("CExplorerBand::IsWindowOwner returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+
+// *** IBandNavigate methods ***
+HRESULT STDMETHODCALLTYPE CExplorerBand::Select(long paramC)
+{
+ HRESULT hr;
+ if (m_internalBandNavigate)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::Select(long
paramC=%x)\n", paramC);
+ hr = m_internalBandNavigate->Select(paramC);
+ DbgPrint("CExplorerBand::Select returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+
+// *** INamespaceProxy ***
+HRESULT STDMETHODCALLTYPE CExplorerBand::GetNavigateTarget(long paramC, long param10,
long param14)
+{
+ HRESULT hr;
+ if (m_internalNamespaceProxy)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::GetNavigateTarget(long
paramC=%08x, long param10=%08x, long param14=%08x)\n",
+ paramC, param10, param14);
+ hr = m_internalNamespaceProxy->GetNavigateTarget(paramC, param10, param14);
+ DbgPrint("CExplorerBand::GetNavigateTarget returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+HRESULT STDMETHODCALLTYPE CExplorerBand::Invoke(long paramC)
+{
+ HRESULT hr;
+ if (m_internalNamespaceProxy)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::Invoke(long
paramC=%08x)\n", paramC);
+ hr = m_internalNamespaceProxy->Invoke(paramC);
+ DbgPrint("CExplorerBand::Invoke returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+HRESULT STDMETHODCALLTYPE CExplorerBand::OnSelectionChanged(long paramC)
+{
+ HRESULT hr;
+ if (m_internalNamespaceProxy)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::OnSelectionChanged(long
paramC=%08x)\n", paramC);
+ hr = m_internalNamespaceProxy->OnSelectionChanged(paramC);
+ DbgPrint("CExplorerBand::OnSelectionChanged returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+HRESULT STDMETHODCALLTYPE CExplorerBand::RefreshFlags(long paramC, long param10, long
param14)
+{
+ HRESULT hr;
+ if (m_internalNamespaceProxy)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::RefreshFlags(long
paramC=%08x, long param10=%08x, long param14=%08x)\n",
+ paramC, param10, param14);
+ hr = m_internalNamespaceProxy->RefreshFlags(paramC, param10, param14);
+ DbgPrint("CExplorerBand::RefreshFlags returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+HRESULT STDMETHODCALLTYPE CExplorerBand::CacheItem(long paramC)
+{
+ HRESULT hr;
+ if (m_internalNamespaceProxy)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::CacheItem(long
paramC=%08x)\n", paramC);
+ hr = m_internalNamespaceProxy->CacheItem(paramC);
+ DbgPrint("CExplorerBand::CacheItem returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+
+// *** IDispatch methods ***
+HRESULT STDMETHODCALLTYPE CExplorerBand::GetTypeInfoCount(UINT *pctinfo)
+{
+ HRESULT hr;
+ if (m_internalDispatch)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::GetTypeInfoCount(UINT
*pctinfo=%p)\n", pctinfo);
+ hr = m_internalDispatch->GetTypeInfoCount(pctinfo);
+ if (pctinfo)
+ DbgPrint("\t*pctinfo=%08x\n", *pctinfo);
+ DbgPrint("CExplorerBand::GetTypeInfoCount returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+HRESULT STDMETHODCALLTYPE CExplorerBand::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo
**ppTInfo)
+{
+ HRESULT hr;
+ if (m_internalDispatch)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::GetTypeInfo(UINT
iTInfo=%u, LCID lcid=%08x, ITypeInfo **ppTInfo=%p)\n",
+ iTInfo, lcid, ppTInfo);
+ hr = m_internalDispatch->GetTypeInfo(iTInfo, lcid, ppTInfo);
+ if (ppTInfo)
+ DbgPrint("\t*ppTInfo=%08x\n", *ppTInfo);
+ DbgPrint("CExplorerBand::GetTypeInfo returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+HRESULT STDMETHODCALLTYPE CExplorerBand::GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames,
UINT cNames, LCID lcid, DISPID *rgDispId)
+{
+ HRESULT hr;
+ if (m_internalDispatch)
+ {
+ DbgPrint("HRESULT STDMETHODCALLTYPE CExplorerBand::GetIDsOfNames(REFIID
riid=%s, LPOLESTR *rgszNames=%S, UINT cNames=%u, LCID lcid=%08x, DISPID
*rgDispId=%p)\n",
+ wine_dbgstr_guid(&riid), rgszNames, cNames, lcid, rgDispId);
+ hr = m_internalDispatch->GetIDsOfNames(riid, rgszNames, cNames, lcid,
rgDispId);
+ if (rgDispId && SUCCEEDED(hr))
+ {
+ for (UINT i = 0; i < cNames; i++)
+ {
+ DbgPrint("\trgDispId[%d]=%08x\n", rgDispId[i]);
+ }
+ }
+ DbgPrint("CExplorerBand::GetTypeInfo returning %08lx\n", hr);
+ return hr;
+ }
+
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
+HRESULT STDMETHODCALLTYPE CExplorerBand::Invoke(DISPID dispIdMember, REFIID riid, LCID
lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo,
UINT *puArgErr)
+{
+ UNIMPLEMENTED;
+ return E_NOTIMPL;
+}
+
Propchange: trunk/reactos/dll/win32/browseui/explorerband.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/dll/win32/browseui/explorerband.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/browseui/explore…
==============================================================================
--- trunk/reactos/dll/win32/browseui/explorerband.h (added)
+++ trunk/reactos/dll/win32/browseui/explorerband.h [iso-8859-1] Wed Dec 3 16:11:46 2014
@@ -0,0 +1,227 @@
+#pragma once
+
+#if 0
+// Is this a CToolsBand that implements a toolbar?
+class CToolBand :
+ public CComObjectRootEx<CComMultiThreadModelNoCS>,
+ public IDeskBand,
+ public IObjectWithSite,
+ public IInputObject,
+ public IPersistStream,
+ public IOleCommandTarget,
+ public IServiceProvider
+{
+public:
+ // *** IOleWindow methods ***
+ virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
+ virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
+
+ // *** IDockingWindow methods ***
+ virtual HRESULT STDMETHODCALLTYPE CloseDW(DWORD dwReserved);
+ virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW(const RECT *prcBorder, IUnknown
*punkToolbarSite, BOOL fReserved);
+ virtual HRESULT STDMETHODCALLTYPE ShowDW(BOOL fShow);
+
+ // *** IDeskBand methods ***
+ virtual HRESULT STDMETHODCALLTYPE GetBandInfo(DWORD dwBandID, DWORD dwViewMode,
DESKBANDINFO *pdbi);
+
+ // *** IObjectWithSite methods ***
+ virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *pUnkSite);
+ virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, void **ppvSite);
+
+ // *** IOleCommandTarget methods ***
+ virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds,
OLECMD prgCmds [], OLECMDTEXT *pCmdText);
+ virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD
nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
+
+ // *** IServiceProvider methods ***
+ virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void
**ppvObject);
+
+ // *** IInputObject methods ***
+ virtual HRESULT STDMETHODCALLTYPE UIActivateIO(BOOL fActivate, LPMSG lpMsg);
+ virtual HRESULT STDMETHODCALLTYPE HasFocusIO();
+ virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(LPMSG lpMsg);
+
+ // *** IPersist methods ***
+ virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
+
+ // *** IPersistStream methods ***
+ virtual HRESULT STDMETHODCALLTYPE IsDirty();
+ virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
+ virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
+ virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
+
+ BEGIN_COM_MAP(CToolBand)
+ COM_INTERFACE_ENTRY2_IID(IID_IOleWindow, IOleWindow, IDeskBand)
+ COM_INTERFACE_ENTRY2_IID(IID_IDockingWindow, IDockingWindow, IDeskBand)
+ COM_INTERFACE_ENTRY_IID(IID_IDeskBand, IDeskBand)
+ COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
+ COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
+ COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
+ COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
+ COM_INTERFACE_ENTRY2_IID(IID_IPersist, IPersist, IPersistStream)
+ COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
+ END_COM_MAP()
+};
+
+class CNSCBand :
+ public CToolBand,
+ public IDeskBand,
+ public IObjectWithSite,
+ public IInputObject,
+ public IPersistStream,
+ public IOleCommandTarget,
+ public IServiceProvider,
+ public IBandNavigate,
+ public IWinEventHandler,
+ public INamespaceProxy
+{
+public:
+ // *** IWinEventHandler methods ***
+ virtual HRESULT STDMETHODCALLTYPE OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam,
LPARAM lParam, LRESULT *theResult);
+ virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd);
+
+ // *** IBandNavigate methods ***
+ virtual HRESULT STDMETHODCALLTYPE Select(long paramC);
+
+ // *** INamespaceProxy ***
+ virtual HRESULT STDMETHODCALLTYPE GetNavigateTarget(long paramC, long param10, long
param14);
+ virtual HRESULT STDMETHODCALLTYPE Invoke(long paramC);
+ virtual HRESULT STDMETHODCALLTYPE OnSelectionChanged(long paramC);
+ virtual HRESULT STDMETHODCALLTYPE RefreshFlags(long paramC, long param10, long
param14);
+ virtual HRESULT STDMETHODCALLTYPE CacheItem(long paramC);
+
+ BEGIN_COM_MAP(CNSCBand)
+ COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler)
+ COM_INTERFACE_ENTRY_IID(IID_IBandNavigate, IBandNavigate)
+ COM_INTERFACE_ENTRY_IID(IID_INamespaceProxy, INamespaceProxy)
+#if 0
+ COM_INTERFACE_ENTRY_CHAIN(CToolBand)
+#else
+ COM_INTERFACE_ENTRY2_IID(IID_IOleWindow, IOleWindow, IDeskBand)
+ COM_INTERFACE_ENTRY2_IID(IID_IDockingWindow, IDockingWindow, IDeskBand)
+ COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
+ COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
+ COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
+ COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
+ COM_INTERFACE_ENTRY2_IID(IID_IPersist, IPersist, IPersistStream)
+ COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
+#endif
+ END_COM_MAP()
+};
+#endif
+
+class CExplorerBand :
+ public CComCoClass<CExplorerBand, &CLSID_ExplorerBand>,
+#if 0
+ public CNSCBand,
+#else
+ public CComObjectRootEx<CComMultiThreadModelNoCS>,
+#endif
+ public IDeskBand,
+ public IObjectWithSite,
+ public IInputObject,
+ public IPersistStream,
+ public IOleCommandTarget,
+ public IServiceProvider,
+ public IBandNavigate,
+ public IWinEventHandler,
+ public INamespaceProxy
+{
+ CComPtr<IUnknown> m_internalBand;
+
+ CComPtr<IDeskBand> m_internalDeskBand;
+ CComPtr<IObjectWithSite> m_internalObjectWithSite;
+ CComPtr<IInputObject> m_internalInputObject;
+ CComPtr<IPersistStream> m_internalPersistStream;
+ CComPtr<IOleCommandTarget> m_internalOleCommandTarget;
+ CComPtr<IServiceProvider> m_internalServiceProvider;
+ CComPtr<IBandNavigate> m_internalBandNavigate;
+ CComPtr<IWinEventHandler> m_internalWinEventHandler;
+ CComPtr<INamespaceProxy> m_internalNamespaceProxy;
+ CComPtr<IDispatch> m_internalDispatch;
+
+ bool m_OnWinEventShown;
+public:
+ CExplorerBand();
+ virtual ~CExplorerBand();
+
+ // *** IOleWindow methods ***
+ virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
+ virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
+
+ // *** IDockingWindow methods ***
+ virtual HRESULT STDMETHODCALLTYPE CloseDW(DWORD dwReserved);
+ virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW(const RECT *prcBorder, IUnknown
*punkToolbarSite, BOOL fReserved);
+ virtual HRESULT STDMETHODCALLTYPE ShowDW(BOOL fShow);
+
+ // *** IDeskBand methods ***
+ virtual HRESULT STDMETHODCALLTYPE GetBandInfo(DWORD dwBandID, DWORD dwViewMode,
DESKBANDINFO *pdbi);
+
+ // *** IObjectWithSite methods ***
+ virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *pUnkSite);
+ virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, void **ppvSite);
+
+ // *** IOleCommandTarget methods ***
+ virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds,
OLECMD prgCmds [], OLECMDTEXT *pCmdText);
+ virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD
nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
+
+ // *** IServiceProvider methods ***
+ virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void
**ppvObject);
+
+ // *** IInputObject methods ***
+ virtual HRESULT STDMETHODCALLTYPE UIActivateIO(BOOL fActivate, LPMSG lpMsg);
+ virtual HRESULT STDMETHODCALLTYPE HasFocusIO();
+ virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(LPMSG lpMsg);
+
+ // *** IPersist methods ***
+ virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
+
+ // *** IPersistStream methods ***
+ virtual HRESULT STDMETHODCALLTYPE IsDirty();
+ virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
+ virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
+ virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
+
+ // *** IWinEventHandler methods ***
+ virtual HRESULT STDMETHODCALLTYPE OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam,
LPARAM lParam, LRESULT *theResult);
+ virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd);
+
+ // *** IBandNavigate methods ***
+ virtual HRESULT STDMETHODCALLTYPE Select(long paramC);
+
+ // *** INamespaceProxy ***
+ virtual HRESULT STDMETHODCALLTYPE GetNavigateTarget(long paramC, long param10, long
param14);
+ virtual HRESULT STDMETHODCALLTYPE Invoke(long paramC);
+ virtual HRESULT STDMETHODCALLTYPE OnSelectionChanged(long paramC);
+ virtual HRESULT STDMETHODCALLTYPE RefreshFlags(long paramC, long param10, long
param14);
+ virtual HRESULT STDMETHODCALLTYPE CacheItem(long paramC);
+
+ // *** IDispatch methods ***
+ virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo);
+ virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo
**ppTInfo);
+ virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames,
UINT cNames, LCID lcid, DISPID *rgDispId);
+ virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid,
WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT
*puArgErr);
+
+ DECLARE_REGISTRY_RESOURCEID(IDR_EXPLORERBAND)
+ DECLARE_NOT_AGGREGATABLE(CExplorerBand)
+
+ DECLARE_PROTECT_FINAL_CONSTRUCT()
+
+ BEGIN_COM_MAP(CExplorerBand)
+ COM_INTERFACE_ENTRY_IID(IID_IDispatch, IDeskBand)
+ COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler)
+ COM_INTERFACE_ENTRY_IID(IID_IBandNavigate, IBandNavigate)
+ COM_INTERFACE_ENTRY_IID(IID_INamespaceProxy, INamespaceProxy)
+ COM_INTERFACE_ENTRY2_IID(IID_IOleWindow, IOleWindow, IDeskBand)
+ COM_INTERFACE_ENTRY2_IID(IID_IDockingWindow, IDockingWindow, IDeskBand)
+ COM_INTERFACE_ENTRY_IID(IID_IDeskBand, IDeskBand)
+ COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
+ COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
+ COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
+ COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
+ COM_INTERFACE_ENTRY2_IID(IID_IPersist, IPersist, IPersistStream)
+ COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
+ END_COM_MAP()
+};
+
+extern "C"
+HRESULT WINAPI CExplorerBand_Constructor(REFIID riid, LPVOID *ppv);
Propchange: trunk/reactos/dll/win32/browseui/explorerband.h
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/reactos/dll/win32/browseui/precomp.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/browseui/precomp…
==============================================================================
--- trunk/reactos/dll/win32/browseui/precomp.h [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/browseui/precomp.h [iso-8859-1] Wed Dec 3 16:11:46 2014
@@ -41,6 +41,7 @@
#include "commonbrowser.h"
#include "globalfoldersettings.h"
#include "regtreeoptions.h"
+#include "explorerband.h"
#include <stdio.h>
WINE_DEFAULT_DEBUG_CHANNEL(browseui);
Added: trunk/reactos/dll/win32/browseui/res/explorerband.rgs
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/browseui/res/exp…
==============================================================================
--- trunk/reactos/dll/win32/browseui/res/explorerband.rgs (added)
+++ trunk/reactos/dll/win32/browseui/res/explorerband.rgs [iso-8859-1] Wed Dec 3 16:11:46
2014
@@ -0,0 +1,13 @@
+HKCR
+{
+ NoRemove CLSID
+ {
+ ForceRemove {EFA24E64-B078-11D0-89E4-00C04FC9E26E} = s 'Explorer TreeView
Band'
+ {
+ InprocServer32 = s '%MODULE%'
+ {
+ val ThreadingModel = s 'Apartment'
+ }
+ }
+ }
+}
Propchange: trunk/reactos/dll/win32/browseui/res/explorerband.rgs
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/reactos/dll/win32/browseui/resource.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/browseui/resourc…
==============================================================================
--- trunk/reactos/dll/win32/browseui/resource.h [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/browseui/resource.h [iso-8859-1] Wed Dec 3 16:11:46 2014
@@ -77,6 +77,7 @@
#define IDR_INTERNETTOOLBAR 136
#define IDR_GLOBALFOLDERSETTINGS 137
#define IDR_REGTREEOPTIONS 138
+#define IDR_EXPLORERBAND 139
#define IDS_SMALLICONS 12301
#define IDS_LARGEICONS 12302
Modified: trunk/reactos/dll/win32/browseui/shellbrowser.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/browseui/shellbr…
==============================================================================
--- trunk/reactos/dll/win32/browseui/shellbrowser.cpp [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/browseui/shellbrowser.cpp [iso-8859-1] Wed Dec 3 16:11:46
2014
@@ -23,6 +23,8 @@
#include <shellapi.h>
#include <htiframe.h>
#include <strsafe.h>
+
+#define USE_CUSTOM_EXPLORERBAND 1
extern "C"
BOOL WINAPI Shell_GetImageLists(
@@ -1179,9 +1181,24 @@
hResult = GetBaseBar(vertical, (IUnknown **)&theBaseBar);
if (FAILED_UNEXPECTEDLY(hResult))
return hResult;
- hResult = CoCreateInstance(classID, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARG(IUnknown,
&newBand));
- if (FAILED_UNEXPECTEDLY(hResult))
- return hResult;
+
+#if USE_CUSTOM_EXPLORERBAND
+ TRACE("ShowBand called for CLSID %s, vertical=%d...\n",
wine_dbgstr_guid(&classID), vertical);
+ if (IsEqualCLSID(CLSID_ExplorerBand, classID))
+ {
+ TRACE("CLSID_ExplorerBand requested, building internal band.\n");
+ hResult = CExplorerBand_Constructor(IID_PPV_ARG(IUnknown, &newBand));
+ if (FAILED_UNEXPECTEDLY(hResult))
+ return hResult;
+ }
+ else
+#endif
+ {
+ TRACE("A different CLSID requested, using CoCreateInstance.\n");
+ hResult = CoCreateInstance(classID, NULL, CLSCTX_INPROC_SERVER,
IID_PPV_ARG(IUnknown, &newBand));
+ if (FAILED_UNEXPECTEDLY(hResult))
+ return hResult;
+ }
hResult = theBaseBar->QueryInterface(IID_PPV_ARG(IDeskBar, &deskBar));
if (FAILED_UNEXPECTEDLY(hResult))
return hResult;
@@ -1199,6 +1216,7 @@
hResult = dockingWindow->ShowDW(TRUE);
if (FAILED_UNEXPECTEDLY(hResult))
return hResult;
+
return S_OK;
}