|
|
#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
|