如何实施气球工具提示

气球工具提示与标准工具提示类似,但会以卡通风格的“气球”显示,其箭头指向该工具。 气球工具提示可以是单行或多行。 它们的创建和处理方式与标准工具提示基本相同。

箭头和矩形的默认位置如下图所示。 如果工具太靠近屏幕顶部,则工具提示就会出现在工具矩形的右下方。 如果工具太靠近屏幕右侧,则类似的原则也将适用,但工具提示会显示在工具矩形的左侧。

screen shot of a dialog box; a balloon tooltip with one line of text appears above and to the right of the target

可以通过设置工具提示 TOOLINFO 结构的 uFlags 成员中的 TTF_CENTERTIP 标志来更改默认定位。 在这种情况下,箭头通常指向工具矩形下边缘的中心,而文本矩形显示在工具的正下方。 箭头连接到文本矩形的上边缘中央位置。 如果工具离屏幕底部太近,则文本矩形就会位于工具上方的中心位置,而箭头则连接到下边缘的中心。

下图显示了一个在工具上居中的工具提示。

screen shot of a dialog box; a balloon tooltip with one line of text appears centered below the target

如果要指定箭头指向的位置,请在工具提示 TOOLINFO 结构的 uFlags 成员中设置 TTF_TRACK 标志。 然后,通过发送 TTM_TRACKPOSITION 消息,以 lParam 值中的 x 坐标和 y 坐标来指定坐标。 如果还设置了 TTF_CENTERTIP,则箭头仍会指向 TTM_TRACKPOSITION 消息指定的位置。

需要了解的事项

技术

先决条件

  • C/C++
  • Windows 用户界面编程

说明

实现气球工具提示

以下示例代码展示了如何使用 TTS_BALLOON 工具提示控件样式来实现居中的气球工具提示。

hwndToolTips = CreateWindow(TOOLTIPS_CLASS, NULL, 
                            WS_POPUP | TTS_NOPREFIX | TTS_BALLOON, 
                            0, 0, 0, 0, NULL, NULL, g_hinst, NULL);

if (hwndTooltip)
{
    TOOLINFO ti;

    ti.cbSize   = sizeof(ti);
    ti.uFlags   = TTF_TRANSPARENT | TTF_CENTERTIP;
    ti.hwnd     = hwnd;
    ti.uId      = 0;
    ti.hinst    = NULL;
    ti.lpszText = LPSTR_TEXTCALLBACK;

    GetClientRect(hwnd, &ti.rect);

    SendMessage(hwndToolTips, TTM_ADDTOOL, 0, (LPARAM) &ti );

}
            

使用工具提示控件

工具提示样式