typedef struct {
int iBitmap; // 位图的索引或标识符
int idCommand; // 命令标识符
BYTE fsState; // 按钮状态
BYTE fsStyle; // 按钮风格
BYTE bReserved[2]; // 保留,必须为0
DWORD_PTR dwData; // 用户数据
INT_PTR iString; // 字符串的索引或标识符
} TBBUTTON, *PTBBUTTON, *LPTBBUTTON;
- iBitmap: 位图的索引或位图标识符,用于指定按钮显示的图像。
- idCommand: 命令标识符,用于识别按钮。
- fsState: 按钮状态,可以是以下值的组合:
- TBSTATE_CHECKED: 按钮处于选中状态。
- TBSTATE_ENABLED: 按钮可用。
- TBSTATE_HIDDEN: 按钮隐藏。
- TBSTATE_INDETERMINATE: 按钮处于不定状态(仅用于带有 TBSTYLE_INDETERMINATE 风格的按钮)。
- TBSTATE_PRESSED: 按钮被按下。
- fsStyle: 按钮风格,可以是以下值之一:
- TBSTYLE_BUTTON: 普通按钮。
- TBSTYLE_CHECK: 复选按钮。
- TBSTYLE_DROPDOWN: 下拉按钮。
- TBSTYLE_SEP: 分隔符。
- bReserved: 保留字段,必须为0。
- dwData: 用户数据,应用程序可自定义的数据。
- iString: 字符串的索引或字符串标识符,用于指定按钮上显示的文本。
这个结构体用于描述工具栏上的按钮的属性,通过添加多个 TBBUTTON 结构,可以在工具栏上创建一组按钮。以下是一个示例,展示如何使用 TBBUTTON 结构初始化工具栏:
TBBUTTON tbButtons[3];
tbButtons[0].iBitmap = 0; // 位图索引
tbButtons[0].idCommand = IDM_BUTTON1; // 命令标识符
tbButtons[0].fsState = TBSTATE_ENABLED; // 按钮状态
tbButtons[0].fsStyle = TBSTYLE_BUTTON; // 按钮风格
tbButtons[0].dwData = 0; // 用户数据
tbButtons[0].iString = 0; // 字符串索引或标识符
tbButtons[1].iBitmap = 1;
tbButtons[1].idCommand = IDM_BUTTON2;
tbButtons[1].fsState = TBSTATE_ENABLED;
tbButtons[1].fsStyle = TBSTYLE_BUTTON;
tbButtons[1].dwData = 0;
tbButtons[1].iString = 0;
tbButtons[2].iBitmap = 2;
tbButtons[2].idCommand = IDM_BUTTON3;
tbButtons[2].fsState = TBSTATE_ENABLED;
tbButtons[2].fsStyle = TBSTYLE_BUTTON;
tbButtons[2].dwData = 0;
tbButtons[2].iString = 0;
SendMessage(hwndToolbar, TB_ADDBUTTONS, sizeof(tbButtons)/sizeof(TBBUTTON), (LPARAM)&tbButtons);
在上述代码中,hwndToolbar 是工具栏控件的句柄,通过 TB_ADDBUTTONS 消息将 TBBUTTON 数组添加到工具栏。
转载请注明出处:http://www.zyzy.cn/article/detail/24975/Win32 API/Commctrl.h/TBBUTTON