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

124 lines
4.7 KiB
C++

#ifndef _browbs_h
#define _browbs_h
#define WANT_CBANDSITE_CLASS
#include "bandsite.h"
class CBrowserBandSite :
public CBandSite,
public IExplorerToolbar
{
public:
CBrowserBandSite();
virtual ~CBrowserBandSite();
// *** IUnknown ***
STDMETHODIMP QueryInterface(REFIID riid, void ** ppvObj) { return CBandSite::QueryInterface(riid, ppvObj);};
STDMETHODIMP_(ULONG) AddRef(void) { return CBandSite::AddRef();};
STDMETHODIMP_(ULONG) Release(void) { return CBandSite::Release();};
// *** IOleCommandTarget ***
STDMETHODIMP Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANTARG *pvarargIn, VARIANTARG *pvarargOut);
// *** IWinEventHandler ***
STDMETHODIMP OnWinEvent(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *plres);
STDMETHODIMP IsWindowOwner(HWND hwnd);
// *** IInputObject methods ***
STDMETHODIMP TranslateAcceleratorIO(LPMSG lpMsg);
STDMETHODIMP HasFocusIO();
// *** IBandSite methods ***
STDMETHODIMP SetBandSiteInfo(const BANDSITEINFO * pbsinfo);
// *** IDeskBarClient methods ***
STDMETHODIMP SetModeDBC(DWORD dwMode);
// *** IExplorerToolbar ***
STDMETHODIMP SetCommandTarget(IUnknown* punkCmdTarget, const GUID* pguidButtonGroup, DWORD dwFlags);
STDMETHODIMP AddStdBrowserButtons(void) { return E_NOTIMPL; };
STDMETHODIMP AddButtons(const GUID* pguidButtonGroup, UINT nButtons, const TBBUTTON* lpButtons);
STDMETHODIMP AddString(const GUID * pguidButtonGroup, HINSTANCE hInst, UINT_PTR uiResID, LONG_PTR *pOffset);
STDMETHODIMP GetButton(const GUID* pguidButtonGroup, UINT uiCommand, LPTBBUTTON lpButton);
STDMETHODIMP GetState(const GUID* pguidButtonGroup, UINT uiCommand, UINT* pfState);
STDMETHODIMP SetState(const GUID* pguidButtonGroup, UINT uiCommand, UINT fState);
STDMETHODIMP AddBitmap(const GUID* pguidButtonGroup, UINT uiBMPType, UINT uiCount, TBADDBITMAP* ptb,
LRESULT* pOffset, COLORREF rgbMask) { return E_NOTIMPL; };
STDMETHODIMP GetBitmapSize(UINT* uiID) { return E_NOTIMPL; };
STDMETHODIMP SendToolbarMsg(const GUID* pguidButtonGroup, UINT uMsg, WPARAM wParam,
LPARAM lParam, LRESULT *plRes) { return E_NOTIMPL; };
STDMETHODIMP SetImageList(const GUID* pguidCmdGroup, HIMAGELIST himlNormal, HIMAGELIST himlHot, HIMAGELIST himlDisabled);
STDMETHODIMP ModifyButton( const GUID* pguidButtonGroup, UINT uiCommand, LPTBBUTTON lpButton) { return E_NOTIMPL; };
protected:
virtual void _OnCloseBand(DWORD dwBandID);
virtual LRESULT _OnBeginDrag(NMREBAR* pnm);
virtual LRESULT _OnNotify(LPNMHDR pnm);
virtual HRESULT _Initialize(HWND hwndParent);
virtual IDropTarget* _WrapDropTargetForBand(IDropTarget* pdtBand);
virtual HRESULT v_InternalQueryInterface(REFIID riid, void **ppvObj);
virtual DWORD _GetWindowStyle(DWORD* pdwExStyle);
virtual HMENU _LoadContextMenu();
LRESULT _OnCDNotify(LPNMCUSTOMDRAW pnm);
virtual void _Close();
HRESULT _TrySetFocusTB(int iDir);
virtual HRESULT _CycleFocusBS(LPMSG lpMsg);
LRESULT _OnHotItemChange(LPNMTBHOTITEM pnmtb);
LRESULT _OnNotifyBBS(LPNMHDR pnm);
virtual void _BandInfoFromBandItem(REBARBANDINFO *prbbi, LPBANDITEMDATA pbid, BOOL fBSOnly);
virtual void _ShowBand(LPBANDITEMDATA pbid, BOOL fShow);
virtual void _UpdateAllBands(BOOL fBSOnly, BOOL fNoAutoSize);
virtual int _ContextMenuHittest(LPARAM lParam, POINT* ppt);
HFONT _GetTitleFont(BOOL fForceRefresh);
virtual void _CalcHeights();
void _InitLayout();
void _UpdateLayout();
void _UpdateToolbarFont();
void _CreateTBRebar();
void _InsertToolbarBand();
void _UpdateToolbarBand();
void _CreateTB();
void _RemoveAllButtons();
void _UpdateHeaderHeight(int iBand);
virtual void _PositionToolbars(LPPOINT ppt);
void _CreateOptionsTB();
virtual void _PrepareOptionsTB();
virtual void _SizeOptionsTB();
void _DrawEtchline(HDC hdc, LPRECT prc, int iOffset, BOOL fVertical);
BITBOOL _fTheater:1;
BITBOOL _fNoAutoHide:1;
BITBOOL _fToolbar:1; // do we have a toolbar for the current band?
HWND _hwndTBRebar;
HWND _hwndTB;
HWND _hwndOptionsTB;
IOleCommandTarget* _pCmdTarget;
GUID _guidButtonGroup;
HFONT _hfont;
UINT _uTitle;
UINT _uToolbar;
DWORD _dwBandIDCur; // the currently visible band
};
#define BROWSERBAR_ICONWIDTH 16
#define BROWSERBAR_FONTSIZE 18
#ifndef UNIX
#define BROWSERBAR_TITLEHEIGHT 22
#else
#define BROWSERBAR_TITLEHEIGHT 24
#endif
#define BROWSERBAR_TOOLBARHEIGHT 24
#endif // _browbs_h