Как изменить растровое изображение кнопки панели инструментов в win32?
Я создал панель инструментов с некоторыми элементами управления, используя ReBar в окне. Может кто-нибудь, пожалуйста, скажите мне,
- Как получить HWND для кнопок / выпадающего списка / и т. Д. (Не обычных кнопок в окне), если я знаю (только) идентификатор этого?
- Как получить HBITMAP, если я знаю идентификатор ресурса?
Как установить растровое изображение на контроллер?
SendDlgItemMessageW (hWnd, nId, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hBitmap);
Это не работает для панелей инструментов, не так ли? Я не мог найти способ сделать это, пожалуйста, помогите мне. Спасибо...
С уважением
РЕДАКТИРОВАТЬ: Кто-нибудь, пожалуйста?:(
РЕДАКТИРОВАТЬ: Хорошо. кажется, все заняты в эти дни.:(Кстати, это неправильный вопрос?
2 ответа
Вы можете скачать ControlSpy и попробовать его там, чтобы почувствовать его.
Я проверил арматуру и увидел, что RB_SETBANDINFO (под сообщениями) может быть тем, что вы ищете.
GetDlgItem будет работать с Rebar так же хорошо, как и с Dialog.
Вы можете использовать функцию GetDlgItem с любой парой родительских и дочерних окон, а не только с диалоговыми окнами. Пока параметр hDlg указывает родительское окно, а дочернее окно имеет уникальный идентификатор (как указано параметром hMenu в функции CreateWindow или CreateWindowEx, которая создала дочернее окно), GetDlgItem возвращает действительный дескриптор дочернему окну.
Вы можете использовать LoadImage, чтобы загрузить растровое изображение из ресурса и вернуть HBITMAP.
В заключение, SendMessage(hWndButton, BM_SETIMAGE, (WPARAM) IMAGE_BITMAP, (LPARAM) hBitmap);