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

100 lines
3.6 KiB
C++

#ifndef BaseBar_H_
#define BaseBar_H_
#include "cwndproc.h"
#ifdef __cplusplus
//========================================================================
// class CBaseBar (CBaseBar* pwbar)
//========================================================================
class CBaseBar : public IOleCommandTarget
, public IServiceProvider
, public IDeskBar
,public IInputObjectSite
,public IInputObject
, public CImpWndProc
{
public:
// *** IUnknown ***
virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj);
virtual STDMETHODIMP_(ULONG) AddRef(void) ;
virtual STDMETHODIMP_(ULONG) Release(void);
// *** IOleCommandTarget methods ***
virtual STDMETHODIMP QueryStatus(const GUID *pguidCmdGroup,
ULONG cCmds, OLECMD rgCmds[], OLECMDTEXT *pcmdtext);
virtual STDMETHODIMP Exec(const GUID *pguidCmdGroup,
DWORD nCmdID, DWORD nCmdexecopt,
VARIANTARG *pvarargIn, VARIANTARG *pvarargOut);
// *** IServiceProvider methods ***
virtual STDMETHODIMP QueryService(REFGUID guidService, REFIID riid, LPVOID* ppvObj);
// *** IOleWindow methods ***
virtual STDMETHODIMP GetWindow(HWND * lphwnd);
virtual STDMETHODIMP ContextSensitiveHelp(BOOL fEnterMode);
// *** IDeskBar methods ***
virtual STDMETHODIMP SetClient(IUnknown* punk);
virtual STDMETHODIMP GetClient(IUnknown** ppunkClient);
virtual STDMETHODIMP OnPosRectChangeDB (LPRECT prc);
// *** IInputObjectSite methods ***
virtual STDMETHODIMP OnFocusChangeIS(IUnknown *punk, BOOL fSetFocus);
// *** IInputObject methods ***
virtual STDMETHODIMP UIActivateIO(BOOL fActivate, LPMSG lpMsg);
virtual STDMETHODIMP HasFocusIO();
virtual STDMETHODIMP TranslateAcceleratorIO(LPMSG lpMsg);
protected:
// Constructor & Destructor
CBaseBar();
virtual ~CBaseBar();
friend HRESULT CBaseBar_CreateInstance(IUnknown* pUnkOuter, IUnknown** ppunk, LPCOBJECTINFO poi);
BOOL _CheckForwardWinEvent(UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT* plres);
virtual void _NotifyModeChange(DWORD dwMode); // NOTE: we may be abhe to get rid of this virtual...
void _GetBorderRect(RECT* prc);
virtual STDMETHODIMP ShowDW(BOOL fShow); // match IDockingWindow::ShowDW
virtual STDMETHODIMP CloseDW(DWORD dwReserved); // match IDockingWindow::CloseDW
virtual LRESULT _OnCommand(UINT msg, WPARAM wparam, LPARAM lparam);
virtual LRESULT _OnNotify(UINT msg, WPARAM wparam, LPARAM lparam);
virtual void _OnSize(void);
virtual void _OnCreate();
virtual void _OnPostedPosRectChange();
virtual DWORD _GetExStyle();
virtual DWORD _GetClassStyle();
// Window procedure
virtual LRESULT v_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
// Member variables
UINT _cRef; // reference count
IUnknown* _punkChild; // ptr to IUnknown for client area
IDeskBarClient* _pDBC; // cached BaseBarClient for _punkChild
IWinEventHandler* _pWEH; // cached IWenEventHandler for _punkChild
HWND _hwndChild; // cached HWND for _punkChild
HWND _hwndSite; // hwnd of the site
BOOL _fShow :1;
BOOL _fPosRectChangePending;
DWORD _dwMode;
SIZE _szChild; // last requested size from child
private:
// Private members
void _RegisterDeskBarClass();
void _CreateDeskBarWindow();
};
#endif // __cplusplus
#endif