如何显示按钮的工具提示
在指定 TBSTYLE_TOOLTIPS 样式时,工具栏将创建并管理一个工具提示控件。 工具提示控件是隐藏的,只有当用户将指针移到工具栏按钮上并停留约一秒钟时才会出现。
应用程序可以通过以下任一方式向工具提示控件提供文本:
- 将工具提示文本设置为每个按钮的 TBBUTTON 结构的 iString 成员。 还必须发送 TB_SETMAXTEXTROWS 消息,并将最大文本行设置为 0,以便文本不会显示为按钮标签,而是显示为工具提示。
- 使用 TBSTYLE_LIST 样式创建工具栏,然后设置 TBSTYLE_EX_MIXEDBUTTONS 扩展样式。 仅显示具有 BTNS_SHOWTEXT 样式的按钮的标签。 对于没有此样式的按钮,将显示包含按钮文本的工具提示。
- 响应 TTN_GETDISPINFO 通知代码。
- 响应 TBN_GETINFOTIP 通知代码。
需要将消息直接发送到工具提示控件的应用程序可以使用 TB_GETTOOLTIPS 消息检索控件的句柄。 应用程序可以使用 TB_SETTOOLTIPS 消息将工具栏的工具提示控件替换为另一个工具提示控件。
提供工具提示文本的最灵活方法是以 WM_NOTIFY 消息的形式响应工具栏控件发送到其父级的 TTN_GETDISPINFO 或 TBN_GETINFOTIP 通知代码。 对于 TTN_GETDISPINFO,lParam 参数包括指向 NMTTDISPINFO结构(也称为 LPTOOLTIPTEXT)的指针,该结构指定需要帮助文本的按钮的命令标识符。 此标识符位于 NMTTDISPINFO.hdr.idFrom 成员中。 应用程序可以将帮助文本复制到此结构,指定包含帮助文本的字符串的地址,或指定字符串资源的实例句柄和资源标识符。
需要了解的事项
技术
先决条件
- C/C++
- Windows 用户界面编程
说明
显示按钮的工具提示
以下示例代码通过提供资源标识符中的文本来处理 TTN_GETDISPINFO 工具提示通知代码。
case WM_NOTIFY:
switch (((LPNMHDR) lParam)->code)
{
case TTN_GETDISPINFO:
{
LPTOOLTIPTEXT lpttt = (LPTOOLTIPTEXT)lParam;
// Set the instance of the module that contains the resource.
lpttt->hinst = g_hInst;
UINT_PTR idButton = lpttt->hdr.idFrom;
switch (idButton)
{
case IDM_NEW:
lpttt->lpszText = MAKEINTRESOURCE(IDS_TIPS_NEW);
break;
case IDM_OPEN:
lpttt->lpszText = MAKEINTRESOURCE(IDS_TIPS_OPEN);
break;
case IDM_SAVE:
lpttt->lpszText = MAKEINTRESOURCE(IDS_TIPS_SAVE);
break;
}
break;
}
}
return TRUE;
相关主题