windows-nt/Source/XPSP1/NT/enduser/netmeeting/ui/conf/multistatetoolbar.h
2020-09-26 16:20:57 +08:00

111 lines
2.7 KiB
C++

#ifndef __MultiStateToolbar_h__
#define __MultiStateToolbar_h__
class CMultiStateToolbar
: public CWindowImpl< CMultiStateToolbar >
{
public:
// Datatypes
struct ItemStateInfo
{
DWORD dwID;
BYTE TbStyle;
HBITMAP hItemBitmap;
HBITMAP hItemHotBitmap;
HBITMAP hItemDisabledBitmap;
};
struct BlockItemStateData
{
DWORD dwID;
DWORD dwBitmapIndex;
BYTE TbStyle;
};
struct BlockData
{
LPCTSTR szTitle;
int cbStates;
BlockItemStateData* pStateData;
};
struct TBItemStateData
{
DWORD BitmapId;
DWORD CommandId;
DWORD StringId;
BYTE TbStyle;
};
struct TBItemData
{
int cStates;
int CurrentState;
TBItemStateData *pStateData;
};
public:
// Construction and destruction
CMultiStateToolbar( void );
~CMultiStateToolbar( void );
// Methods
HRESULT Create( HWND hWndParent,
DWORD dwID,
int cxButton,
int cyButton,
int cxBtnBitmaps,
int cyBtnBitmaps
);
HRESULT Show( BOOL bShow );
HRESULT InsertItem( int cStates, LPCTSTR szTitle, ItemStateInfo* pItemStates, int* pIndex );
HRESULT InsertBlock( int nItems,
BlockData* pItemData,
HINSTANCE hInstance,
int idTBBitmap,
int idTBBitmapHot,
int idTBBitmapDisabled,
int* pIndexFirst
);
HRESULT EnableItem( DWORD dwCmd, BOOL bEnable = TRUE );
HRESULT SetItemState( int iIndex, int NewState );
HRESULT ShowLabels( BOOL bShowLabels );
HRESULT Resize( RECT& rc );
HRESULT GetWindow( HWND* phWnd );
BEGIN_MSG_MAP(CMultiStateToolbar)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
MESSAGE_HANDLER(WM_NCDESTROY,OnNcDestroy)
END_MSG_MAP()
// Message handlers
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& lResult );
LRESULT OnNcDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
private:
// This is here in case we change the toolbar to be a CContainedWindow
HWND _GetToolbarWindow( void ) { return m_hWnd; }
HRESULT _CreateImageLists( void );
void _KillAllButtons( void );
// Data
private:
int m_cxButton;
int m_cyButton;
int m_cxBtnBitmaps;
int m_cyBtnBitmaps;
HIMAGELIST m_himlTB;
HIMAGELIST m_himlTBHot;
HIMAGELIST m_himlTBDisabled;
};
#endif // __MultiStateToolbar_h__