如何将热跟踪与工具栏配合使用
当鼠标指针悬停在某个项目上时,该项目就会被激活。 如果启用了热跟踪,则会高亮显示“热”项目。 使用 TBSTYLE_FLAT 样式创建的工具栏或使用视觉样式的工具栏默认支持热跟踪。
热跟踪要求创建图像列表;因此,不能使用 TB_ADDBITMAP 消息或 CreateToolbarEx 函数来创建工具栏。
当鼠标悬停在工具栏按钮上时,按钮就会突出显示其轮廓。 下图显示的是启用了热跟踪功能的工具栏;在抓取屏幕截图时,鼠标指针正悬停在“Save”按钮上。
如果想在控件状态发生变化时更改工具栏按钮位图,请将不同的图像存储在图像列表中。 例如,某些应用程序的黑白工具栏按钮在被选中时会变成彩色。 图像列表中存储了两个不同的图像。 工具栏支持使用最多三个图像列表。 通常情况下,一个应用程序会有默认、禁用和热跟踪图像列表。 要设置和检索常用工具栏按钮的图像列表,请使用 TB_SETHOTIMAGELIST 和 TB_GETHOTIMAGELIST 消息。
需要了解的事项
技术
先决条件
- C/C++
- Windows 用户界面编程
说明
将热跟踪与工具栏一起使用
以下代码示例为热按钮创建、填充和分配了一个图像列表。
// Create the image list, himlHot.
g_himlHot = ImageList_Create(MYICON_CX,MYICON_CY,ILC_COLOR8,0,4);
// Load a bitmap from a resource file, and add the images to the image list.
// Note that the bitmap contains four images.
hBitmapHot = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_HOT));
ImageList_Add(g_himlHot, hBitmapHot, NULL);
// Set the image list.
SendMessage(hwndTB, TB_SETHOTIMAGELIST, 0, (LPARAM)g_himlHot);
// Loop to fill the array of TBBUTTON structures.
for(i=0;i<MAX_BUTTONS;i++)
{
tbArray[i].iBitmap = i; // Bitmap from image list.
tbArray[i].idCommand = IDM_BUTTONSTART + i;
tbArray[i].fsState = TBSTATE_ENABLED;
tbArray[i].fsStyle = BTNS_DROPDOWN;
tbArray[i].dwData = 0;
tbArray[i].iString = i;
}
DeleteObject(hBitmapHot); // Delete the loaded bitmap.
相关主题