TB_SETIMAGELIST 消息

设置工具栏用于显示处于默认状态的按钮的图像列表。

参数

wParam

版本 5.80。 列表的索引。 如果只使用一个图像列表或使用早期版本的通用控件,请将 wParam 设置为零。 有关使用多个图像列表的详细信息,请参阅“备注”。

lParam

要设置的图像列表的句柄。 如果此参数为 NULL,则按钮中不会显示任何图像

返回值

返回以前用于显示处于默认状态的按钮的图像列表的句柄;如果未设置此类图像列表,则返回 NULL

备注

注意

应用程序负责在销毁工具栏后释放图像列表。

无法将 TB_SETIMAGELIST 消息与 TB_ADDBITMAP 结合使用。 它也不能与使用 CreateToolbarEx 创建的工具栏一起使用,后者在内部调用 TB_ADDBITMAP。 使用 CreateToolbarEx 创建工具栏或使用 TB_ADDBITMAP 添加图像时,工具栏会在内部管理图像列表。 尝试使用 TB_SETIMAGELIST 对其进行修改会产生不可预知的后果

使用版本 5.80 或更高版本的通用控件时,按钮图像不需要来自同一图像列表。 对工具栏按钮图像使用多个图像列表:

  1. 通过向工具栏控件发送 CCM_SETVERSION 消息来启用多个图像列表,其中 wParam(版本号)设置为 5。
  2. 对于要使用的每个图像列表,向工具栏控件发送 TB_SETIMAGELIST 消息。 将 wParam 设置为应用程序定义的 wParam 值,该值将用于标识列表。 将 lParam 设置为列表的 HIMAGELIST 句柄
  3. 对于每个按钮,请将按钮的 TBBUTTON 结构的 iBitmap 成员设置为 MAKELONG(iIndex, iImageID)。 iImageID 值是步骤 2 中定义的相应图像列表的 ID。 iIndex 值是该列表中特定图像的索引
  4. 通过向工具栏控件发送 TB_ADDBUTTONS 消息来添加按钮。

以下代码片段演示了如何将五个按钮添加到工具栏,其中包含来自三个不同的图像列表的图像。 使用 CCM_SETVERSION 消息启用对多个图像列表的支持。 然后设置图像列表并为其分配 ID 0-2。 按钮是从图像列表中分配的图像,如下所示:

  • 按钮 0 来自图像列表 0 (ahim[0]),索引为 1。
  • 按钮 1 来自图像列表 1 (ahim[1]),索引为 1。
  • 按钮 2 来自图像列表 2 (ahim[2]),索引为 1。
  • 按钮 3 来自图像列表 0 (ahim[0]),索引为 2。
  • 按钮 4 来自图像列表 1 (ahim[1]),索引为 3。

最后,使用 TB_ADDBUTTONS 消息将按钮添加到工具栏控件。

//Enable multiple image lists
    SendMessage(hwndTB, CCM_SETVERSION, (WPARAM) 5, 0); 

    //Set the image lists and assign them IDs of 0-2
    SendMessage(hwndTB, TB_SETIMAGELIST, 0, (LPARAM)ahiml[0]);
    SendMessage(hwndTB, TB_SETIMAGELIST, 1, (LPARAM)ahiml[1]);
    SendMessage(hwndTB, TB_SETIMAGELIST, 2, (LPARAM)ahiml[2]);

    // Create the five buttons
    TBBUTTON rgtb[5];
    
    //... initialize the TBBUTTON structures as usual ...
    
    //Assign images to each button
    rgtb[0].iBitmap = MAKELONG(1, 0);
    rgtb[1].iBitmap = MAKELONG(1, 1);
    rgtb[2].iBitmap = MAKELONG(1, 2);
    rgtb[3].iBitmap = MAKELONG(2, 0);
    rgtb[4].iBitmap = MAKELONG(3, 1);

    // Add the five buttons to the toolbar control
    SendMessage(hwndTB, TB_ADDBUTTONS, 5, (LPARAM)(&rgtb);

要求

要求
最低受支持的客户端
Windows Vista [仅限桌面应用]
最低受支持的服务器
Windows Server 2003 [仅限桌面应用]
Header
Commctrl.h

另请参阅

MAKELONG