Отображение подсказок для кнопок
При указании стиля TBSTYLE_TOOLTIPS панель инструментов создает и управляет контролом подсказки. Элемент управления подсказкой скрыт и появляется только когда пользователь наводит указатель на кнопку панели инструментов и держит его там примерно одну секунду.
Приложение может предоставить текст элементу управления подсказки одним из следующих способов:
- Установите текст подсказки в качестве члена iString структуры TBBUTTON для каждой кнопки. Кроме того, необходимо отправить сообщение TB_SETMAXTEXTROWS и установить максимальное количество текстовых строк в 0, чтобы текст отображался в виде подсказки, а не как метка кнопки.
- Создайте панель инструментов с TBSTYLE_LIST стилем, а затем задайте TBSTYLE_EX_MIXEDBUTTONS расширенный стиль. Метки отображаются только для кнопок с BTNS_SHOWTEXT стилем. Для кнопок, которые не имеют этого стиля, отображается подсказка, содержащая текст кнопки.
- Ответьте на код уведомления TTN_GETDISPINFO.
- Ответьте на код уведомления TBN_GETINFOTIP.
Приложение, которому нужно отправлять сообщения непосредственно в управление всплывающей подсказкой, может получить дескриптор этого управления с помощью сообщения TB_GETTOOLTIPS. Приложение может заменить элемент управления подсказками на панели инструментов другим элементом управления подсказками с помощью сообщения TB_SETTOOLTIPS.
Самый гибкий способ предоставления текста всплывающей подсказки — это ответить на код уведомления TTN_GETDISPINFO или TBN_GETINFOTIP, отправленный элементом управления панели инструментов к родителю в виде сообщения WM_NOTIFY. Для TTN_GETDISPINFOпараметр lParam включает указатель на структуру 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;
Связанные разделы