如何显示按钮的工具提示

在指定 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_GETDISPINFOTBN_GETINFOTIP 通知代码。 对于 TTN_GETDISPINFOlParam 参数包括指向 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;

使用工具栏控件

Windows 通用控件演示 (CppWindowsCommonControls)