Я пытаюсь использовать свои собственные изображения для создания панели инструментов в Win32-программе Win32. Вот что у меня есть (в моем случае WM_CREATE):
#define IDT_MAIN_TOOL 101
TBBUTTON tbb[ 1 ];
TBADDBITMAP tbab;
HWND hToolbar = CreateWindowEx( 0, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | TBSTYLE_FLAT, 0, 0, 0, 0, hwnd, ( HMENU )IDT_MAIN_TOL, NULL, NULL );
SendMessage( hToolbar, TB_BUTTONSTRUCTSIZE, ( WPARAM )sizeof( TBBUTTON ), 0 );
tbab.hInst = HINST_COMMCTRL;
tbab.nID = IDB_HIST_LARGE_COLOR;
SendMessage( hToolbar, TB_ADDBITMAP, 0, ( LPARAM )&tbab );
ZeroMemory( tbb, sizeof( tbb ) );
tbb[ 0 ].iBitmap = HIST_BACK;
// I've also tried tbb[ 0 ].iBitmap = LoadIcon( NULL, "browse_back.ico" );
// However, iBitmap must be an integer and can't figure out how to use my 'browse_back.ico' image
tbb[ 0 ].fsState = TBSTATE_ENABLED;
SendMessage( hToolbar, TB_ADDBUTTONS, sizeof( tbb ) / sizeof( TBBUTTON ), ( LPARAM )&tbb );
Я хотел бы использовать мое собственное изображение значка: «browse_back.ico» в качестве изображения для этой кнопки панели инструментов. Как это достигается? Не уверен, если это необходимо, но я использую Microsoft Visual C ++ 2010 Express.
iBitmap
Тип: intНачинающийся с нуля индекс кнопки изображения. Установите для этого члена значение I_IMAGECALLBACK, и панель инструментов отправит код уведомления TBN_GETDISPINFO, чтобы получить индекс изображения, когда это необходимо.
Версия 5.81. Установите для этого элемента значение I_IMAGENONE, чтобы указать, что на кнопке нет изображения. Компоновка кнопки не будет содержать места для растрового изображения, только текст.
Если кнопка является разделителем, то есть если для fsStyle установлено значение BTNS_SEP, iBitmap определяет ширину разделителя в пикселях. Для получения информации о выборе изображений кнопок из списков изображений см. Сообщение TB_SETIMAGELIST.
Так что вам нужно создать список изображений с помощью ImageList_Create()
, добавьте свой ICO образ к нему, используя ImageList_Add()
или же ImageList_ReplaceIcon()
, связать его с панелью инструментов, используя TB_SETIMAGELIST
, и тогда вы можете установить tbb[0].iBitmap
к индексу ICO в списке изображений.
Других решений пока нет …