Как использовать Hot-Tracking с панелями инструментов
При наведении указателя мыши на элемент становится горячим. Если включен режим выделения при наведении, горячий элемент подсвечивается. Панель инструментов, созданная с помощью стиля TBSTYLE_FLAT или использующая визуальные стили, поддерживает горячее отслеживание по умолчанию.
Для горячего отслеживания необходимо создать списки изображений; поэтому нельзя использовать сообщение TB_ADDBITMAP или функцию CreateToolbarEx для создания панели инструментов.
При наведении указателя мыши на кнопку на панели инструментов она подсвечивается. На следующем рисунке показана панель инструментов с включенной функцией горячего отслеживания; указатель мыши наведен на кнопку "Сохранить" в момент создания снимка экрана.
Если вы хотите, чтобы растровое изображение панели инструментов изменилось при изменении состояния элемента управления, сохраните различные изображения в списках изображений. Например, некоторые приложения имеют черные и белые кнопки панели инструментов, которые становятся цветными при выборе. Два разных изображения хранятся в списках изображений. Панели инструментов поддерживают использование до трех списков изображений. Как правило, приложение имеет список изображений по умолчанию, отключенные и с отслеживанием. Чтобы задать и получить списки изображений для кнопок горячей панели инструментов, используйте TB_SETHOTIMAGELIST и сообщения TB_GETHOTIMAGELIST.
Что нужно знать
Технологии
Необходимые условия
- C/C++
- Программирование пользовательского интерфейса Windows
Инструкции
Использование Hot-Tracking с панелью инструментов
В следующем примере кода создается, заполняется и назначается список изображений для горячих кнопок.
// 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.
Связанные разделы