Как реализовать подсказки воздушных шаров

Подсказки воздушных шаров похожи на стандартные подсказки, но отображаются в карикатурном стиле "воздушный шар" с стеблем, указывающим на инструмент. Всплывающие подсказки могут быть однострочные или многострочные. Они создаются и обрабатываются точно так же, как и стандартные подсказки.

Позиция по умолчанию стебля и прямоугольника показана на следующем рисунке. Если инструмент слишком близок к верхней части экрана, подсказка отображается ниже и справа от прямоугольника инструмента. Если инструмент слишком близок к правой части экрана, аналогичные принципы применяются, но подсказка отображается слева от прямоугольника инструмента.

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

Вы можете изменить расположение по умолчанию, задав флаг TTF_CENTERTIP в элементе uFlags структуры tooltip TOOLINFO . В этом случае стебель обычно указывает на центр нижнего края прямоугольника инструмента, а текстовый прямоугольник отображается непосредственно под инструментом. Стебль присоединяется к прямоугольнику текста в центре верхнего края. Если средство слишком близко к нижней части экрана, прямоугольник текста находится по центру над инструментом, а стебли присоединяются к центру нижнего края.

На следующем рисунке показана подсказка, которая сосредоточена на инструменте.

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

Если вы хотите указать, где точки ствола, задайте флаг TTF_TRACK в элементе uFlags структуры tooltip TOOLINFO . Затем укажите координату , отправив сообщение TTM_TRACKPOSITION с координатами x и y в значении lParam . Если TTF_CENTERTIP также задано, он по-прежнему указывает на позицию, указанную сообщением TTM_TRACKPOSITION .

Это важно знать

Технологии

Необходимые компоненты

  • C/C++
  • Программирование пользовательского интерфейса Windows

Instructions

Реализация подсказок воздушных шаров

В следующем примере кода показано, как реализовать центрированную подсказку воздушных шаров с помощью стиля элемента управления 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 );

}
            

Использование элементов управления подсказками

Стили подсказки