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