TBBUTTON 结构用于定义工具栏(Toolbar)控件中的按钮。这个结构在 Commctrl.h 头文件中定义。以下是 TBBUTTON 结构的定义:
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