Поделиться через


Отображение подсказок для кнопок

При указании стиля 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;

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

демонстрация стандартных элементов управления Windows (CppWindowsCommonControls)