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

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

Для горячего отслеживания необходимо создать списки изображений; Поэтому для создания панели инструментов нельзя использовать сообщение ТБ_ADDBITMAP или функцию CreateToolbarEx.

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

screen shot of a dialog box with a three-item toolbar; the selected icon is outlined

Если вы хотите, чтобы растровое изображение кнопки панели инструментов изменилось при изменении состояния элемента управления, сохраните различные изображения в списках изображений. Например, некоторые приложения имеют черные и белые кнопки панели инструментов, которые становятся цветными при выборе. Два разных изображения хранятся в списках изображений. Панели инструментов поддерживают использование до трех списков изображений. Как правило, приложение имеет список изображений по умолчанию, отключен и горячих отслеживания. Чтобы задать и получить списки изображений для кнопок горячей панели инструментов, используйте ТБ_SETHOTIMAGELIST и ТБ_GETHOTIMAGELIST сообщения.

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

Технологии

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

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

Instructions

Использование горячего отслеживания с помощью панели инструментов

В следующем примере кода создается, заполняется и назначается список изображений для горячих кнопок.

// Create the image list, himlHot.
g_himlHot = ImageList_Create(MYICON_CX,MYICON_CY,ILC_COLOR8,0,4);

// Load a bitmap from a resource file, and add the images to the image list.
// Note that the bitmap contains four images.

hBitmapHot = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_HOT));

ImageList_Add(g_himlHot, hBitmapHot, NULL);
   
// Set the image list. 
SendMessage(hwndTB, TB_SETHOTIMAGELIST, 0, (LPARAM)g_himlHot);
   
// Loop to fill the array of TBBUTTON structures.  
for(i=0;i<MAX_BUTTONS;i++)
{
    tbArray[i].iBitmap   = i;                   // Bitmap from image list.
    tbArray[i].idCommand = IDM_BUTTONSTART + i;
    tbArray[i].fsState   = TBSTATE_ENABLED;
    tbArray[i].fsStyle   = BTNS_DROPDOWN;
    tbArray[i].dwData    = 0;
    tbArray[i].iString   = i;
}

DeleteObject(hBitmapHot);    // Delete the loaded bitmap.

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

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