windows-nt/Source/XPSP1/NT/shell/browseui/bandprxy.h
2020-09-26 16:20:57 +08:00

84 lines
2.8 KiB
C++

/**************************************************************\
FILE: bandprxy.h
DESCRIPTION:
The CBandProxy class will allow bands to navigate a
generic browser window. This will work correctly if the
band is tied to the Browser Window because it's a ToolBar.
Or if it's a toolband, each time a navigation happens,
the top most browser window needs to be found or a new window
created.
\**************************************************************/
#ifndef _BANDPRXY_H
#define _BANDPRXY_H
#include "bands.h"
///////////////////////////////////////////////////////////////////
// #DEFINEs
#define SEC_DEFAULT 0x0000
#define SEC_WAIT 0x0002
#define SEC_SHELLSERVICEOBJECTS 0x0004
#define SEC_NOUI 0x0008
/**************************************************************\
CLASS: CBandProxy
DESCRIPTION:
The CBandProxy class will allow bands to navigate a
generic browser window. This will work correctly if the
band is tied to the Browser Window because it's a ToolBar.
Or if it's a toolband, each time a navigation happens,
the top most browser window needs to be found or a new window
created.
\**************************************************************/
class CBandProxy
: public IBandProxy // (Includes IUnknown)
{
public:
//////////////////////////////////////////////////////
// Public Interfaces
//////////////////////////////////////////////////////
// *** IUnknown ***
virtual STDMETHODIMP_(ULONG) AddRef(void);
virtual STDMETHODIMP_(ULONG) Release(void);
virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj);
// *** IBandProxy methods ***
virtual STDMETHODIMP SetSite(IUnknown* punkSite);
virtual STDMETHODIMP CreateNewWindow(IUnknown** ppunk);
virtual STDMETHODIMP GetBrowserWindow(IUnknown** ppunk);
virtual STDMETHODIMP IsConnected();
virtual STDMETHODIMP NavigateToPIDL(LPCITEMIDLIST pidl);
virtual STDMETHODIMP NavigateToURL(LPCWSTR wzUrl, VARIANT * Flags);
// Constructor / Destructor
CBandProxy();
~CBandProxy(void);
// Friend Functions
friend HRESULT CBandProxy_CreateInstance(IUnknown *punkOuter, IUnknown **ppunk, LPCOBJECTINFO poi);
protected:
//////////////////////////////////////////////////////
// Private Member Variables
//////////////////////////////////////////////////////
int _cRef;
BITBOOL _fHaveBrowser : 1; // We haven't tried to get _pwb
IWebBrowser2 * _pwb;
IUnknown * _punkSite;
HRESULT _NavigateToUrlOLE(BSTR bstrURL, VARIANT * Flags);
HRESULT MakeBrowserVisible(IUnknown* punk);
IWebBrowser2* _GetBrowserWindow();
IWebBrowser2* _GetBrowser();
};
#endif /* _BANDPRXY_H */