主题:怎样保持工具条的按钮被按下的状态?
用API作了个工具条,目前需要解决两个小问题:
1. 按钮被按下后,需要保持住被按下的状态,直到再次被点击时才恢复原状;
2. 有一组按钮,同一时间只有一个才能被选择。
恳请有经验的大虾指点一二,有例程代码更好,感激不尽!
下面是我的代码,请大家指教:
HWND platform::createToolBar(HWND hWnd, HINSTANCE hInst)
{
#define NUM_BUTTONS 10
HWND m_hwnd;
TBADDBITMAP tbab;
char szTBStrings[] = "tip1\0tip2\0tip3\0tip4\0\0";
// Create a toolbar.
m_hwnd = CreateWindowEx(0, TOOLBARCLASSNAME, (LPSTR) NULL,
WS_CHILD | WS_VISIBLE | WS_BORDER | TBSTYLE_TOOLTIPS |
WS_CLIPSIBLINGS | WS_CLIPCHILDREN ,
0, 0, 0, 0,
hWnd, (HMENU) IDR_TOOLBAR,
hInst, NULL);
SendMessage (m_hwnd, TB_BUTTONSTRUCTSIZE, (WPARAM) sizeof(TBBUTTON), 0);
tbab.hInst = GetModuleHandle(NULL);
tbab.nID = IDR_TOOLBAR;
SendMessage(m_hwnd, TB_ADDBITMAP, (WPARAM) NUM_BUTTONS,(LPARAM) (LPTBBUTTON) &tbab);
TBBUTTON tbb[] =
{
// int iBitmap; int idCommand; BYTE fsState; BYTE fsStyle;
{0, IDM_BUTTON1,TBSTATE_ENABLED, TBSTYLE_BUTTON, 0,0, 0, 0 },
{1, IDM_BUTTON2,TBSTATE_ENABLED, TBSTYLE_BUTTON, 0,0, 0, 1 },
......
};
SendMessage(m_hwnd, TB_ADDBUTTONS, (WPARAM) NUM_BUTTONS ,(LPARAM) (LPTBBUTTON) &tbb);
//SendMessage(m_hwnd, TB_ADDSTRING, 0, (LPARAM)szTBStrings);
return m_hwnd;
}
1. 按钮被按下后,需要保持住被按下的状态,直到再次被点击时才恢复原状;
2. 有一组按钮,同一时间只有一个才能被选择。
恳请有经验的大虾指点一二,有例程代码更好,感激不尽!
下面是我的代码,请大家指教:
HWND platform::createToolBar(HWND hWnd, HINSTANCE hInst)
{
#define NUM_BUTTONS 10
HWND m_hwnd;
TBADDBITMAP tbab;
char szTBStrings[] = "tip1\0tip2\0tip3\0tip4\0\0";
// Create a toolbar.
m_hwnd = CreateWindowEx(0, TOOLBARCLASSNAME, (LPSTR) NULL,
WS_CHILD | WS_VISIBLE | WS_BORDER | TBSTYLE_TOOLTIPS |
WS_CLIPSIBLINGS | WS_CLIPCHILDREN ,
0, 0, 0, 0,
hWnd, (HMENU) IDR_TOOLBAR,
hInst, NULL);
SendMessage (m_hwnd, TB_BUTTONSTRUCTSIZE, (WPARAM) sizeof(TBBUTTON), 0);
tbab.hInst = GetModuleHandle(NULL);
tbab.nID = IDR_TOOLBAR;
SendMessage(m_hwnd, TB_ADDBITMAP, (WPARAM) NUM_BUTTONS,(LPARAM) (LPTBBUTTON) &tbab);
TBBUTTON tbb[] =
{
// int iBitmap; int idCommand; BYTE fsState; BYTE fsStyle;
{0, IDM_BUTTON1,TBSTATE_ENABLED, TBSTYLE_BUTTON, 0,0, 0, 0 },
{1, IDM_BUTTON2,TBSTATE_ENABLED, TBSTYLE_BUTTON, 0,0, 0, 1 },
......
};
SendMessage(m_hwnd, TB_ADDBUTTONS, (WPARAM) NUM_BUTTONS ,(LPARAM) (LPTBBUTTON) &tbb);
//SendMessage(m_hwnd, TB_ADDSTRING, 0, (LPARAM)szTBStrings);
return m_hwnd;
}