Полезные программы от ZEN-a

Новости | Программы | Гостевая книга | TCP/IP | Услуги | Скачать | E-Книги | Игры | Резюме | English | Deutch

Основы и тонкости VC++-----

Title:       Вывод ToolTip(всплывающей подсказки) в любом месте экрана
Author:      Zarembo Maxim
Environment: VC++ 6.0, NT 4.0, Win9x, Win2k
Section      Miscellaneous Controls
SubSection   Tooltips


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

Системные требования:Windows 95,98,ME,NT,2000,XP.

Исходник отлаживался на VC 6.0.

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, подсказка будет скрыта.

Для того чтобы наша всплывающая подсказка была многострочной используем сообщение TTM_SETMAXTIPWIDTH, которое активизируем как

SendMessage(hwndTT, TTM_SETMAXTIPWIDTH, 0, m_Width);
где m_Width ширина подсказки, которая переводит строчки при наличии пробелов.

Здесь можно увидеть программу, которая была реализована на основе этого исходника.

Перед тем как задавать интересующий вас вопрос по исходнику, проверьте нету ли на него ответа на www.codeproject.com.

Вернуться к содержанию...

-----Основы и тонкости VC++

Новости | Программы | Гостевая книга | TCP/IP | Услуги | Скачать | E-Книги | Игры | Резюме | English | Deutch

IBA IS::220036,Belarus,Minsk,K.Libknehta St.,70 Rating All.BY Мы находимся в каталоге Апорт Полезные программы от ZEN-a

Copyright (c) 2001 ZEN. All Rights Reserved. WWW: http://www.softzenware.com E-MAIL: mzarembo@iba.by