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

StackOverflow https://stackoverflow.com/questions/2647999

Вопрос

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

  1. Как получить HWND Кнопки / Combobox / etc (не нормальные кнопки в окне), если я знаю (только) ID его?
  2. Как получить HBitMAP, если я знаю идентификатор ресурса?
  3. Как установить растровое изображение на контроллер?

    Senddlgitemmessagew (hwnd, nid, bm_setimage, image_bitmap, (lparam) hbitmap);

Это не работает для панелей инструментов, не так ли? Я не мог найти способ сделать это, пожалуйста, помогите мне. Спасибо...

С уважением

Редактировать: Любой, пожалуйста? :(

Редактировать: ОК. Кажется, все заняты в эти дни. :( Кстати, это неправильный вопрос?

Это было полезно?

Решение

Вы могли бы скачать ControlSpy и попробуйте туда, чтобы почувствовать это.
Я проверил арматуру и увидел, что RB_SetBandinfo (под Сообщения) Может быть то, что вы ищете.

Другие советы

Getdlgitem. Будет работать так же хорошо с арматурой, как и с диалоговым окном.

Вы можете использовать функцию GetDLGITEM с любым вариантом Parent-Child Window, а не только с диалоговыми окнами. До тех пор, пока параметр HDLG указывает родительское окно, а дочернее окно имеет уникальный идентификатор (как указано параметром HMENU в функции Createwindow или Createwindowex, которая создала дочернее окно), GetDLGITEM возвращает действительную обработку в детское окно.

Вы можете использовать LoadImage для загрузки растрового изображения из ресурса и вернуть HBitMap.

Ну наконец то, SendMessage(hWndButton, BM_SETIMAGE, (WPARAM) IMAGE_BITMAP, (LPARAM) hBitmap);

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top