Перейти к содержимому

Фотография

Вывод Tooltip (всплывающей подсказки) в любом месте экрана.

- - - - -

  • Авторизуйтесь для ответа в теме

#1
daimond

Отправлено 15 ���� 2008 - 03:42

daimond

    Свояк

  • Пользователи
  • 232 сообщений
Основы и тонкости Visual C++.
http://maxim.z.tripo.../visual_c1.html
ToolTip (всплывающая подсказка) - это всплывающее окошко типа pop-up, которое отображает текст. Служит для выведения информации при наведении курсора мышки на какой-нибудь элемент управления, на статический текст, к которому был привязан идентификатор из ресурсов, или просто на любую часть окна приложения.

В данной статье рассматривается вывод всплывающей подсказки в любом месте экрана.

Первоначально необходимо создать окно класса TOOLTIPS_CLASS, потом заполнить структуру TOOLINFO:

typedef struct tagTOOLINFO {
UINT cbSize;
UINT uFlags;
HWND hwnd;
UINT_PTR uId;
RECT rect;
HINSTANCE hinst;
LPTSTR lpszText;
#if (_WIN32_IE >= 0x0300)
LPARAM lParam;
#endif
}
TOOLINFO, NEAR *PTOOLINFO, FAR *LPTOOLINFO;

Определяем два параметра в этой структуре, которые имеют для нас значение uFlags и lpszText.

uFlags выбираем равным TTF_TRACK, что означает возможность использования посылки сообщений выбирающих позицию для ToolTip-a и видимость.
lpszText - задание текста, который мы хотим выводить.
Теперь мы посылаем сообщение в систему, о желании создать всплывающую подсказку, куда передаём ссылку на нашу структуру SendMessage(hwndTT, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti).

Затем посылаем сообщение TTM_TRACKPOSITION, которая задаёт координаты всплывающей подсказки SendMessage(hwndTT, TTM_TRACKPOSITION, 0, (LPARAM)(DWORD) MAKELONG(m_x, m_y)), где m_x и m_y координаты x и y на экране.

И в последнюю очередь посылаем сообщение о активизации всплывающей подсказки SendMessage(hwndTT, TTM_TRACKACTIVATE, true, (LPARAM)(LPTOOLINFO) &ti), где true параметр указывающий на отображение подсказки, при выборе false, подсказка будет скрыта.