111 lines
2.7 KiB
C
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__
|