Как изменить растровое изображение кнопки панели инструментов в win32?

Я создал панель инструментов с некоторыми элементами управления, используя ReBar в окне. Может кто-нибудь, пожалуйста, скажите мне,

  1. Как получить HWND для кнопок / выпадающего списка / и т. Д. (Не обычных кнопок в окне), если я знаю (только) идентификатор этого?
  2. Как получить HBITMAP, если я знаю идентификатор ресурса?
  3. Как установить растровое изображение на контроллер?

    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);

Другие вопросы по тегам