C ++ Добавить растровое изображение из ресурса в Picture Control

я хочу отобразить растровое изображение на моем Picture Control,
но на самом деле независимо от того, что я пытаюсь, это не работает.
Прямо сейчас мой метод выглядит так:

SendDlgItemMessage(hWnd ,picture_CTRL, BM_SETIMAGE , IMAGE_BITMAP, (LPARAM) MAKEINTRESOURCE(IDB_BITMAP1));

Я также уже пытался использовать

STM_SETIMAGE

Сообщение, но оно не сработает.
Для свойства «Мой Picture Control» «Тип» задано значение «Растровое изображение», а у моего растрового изображения есть идентификатор в resource.h

Надеюсь, вы, ребята, можете помочь 🙂

1

Решение

Во-первых, вы не можете просто смешивать и сопоставлять сообщения в стандартных элементах управления Windows. BM_SETIMAGE а также STM_SETIMAGE имеют совершенно разные значения. Если вы используете статический элемент управления, используйте STM_SETIMAGE, Если вы используете элемент управления Button, используйте BM_SETIMAGE,

Во-вторых, документация для STM_SETIMAGE говорит, что LPARAM должен быть ручкой к изображению. Вы передаете идентификатор ресурса. Вам нужно получить ручку по телефону LoadImage первый. Например:

HBITMAP hBitmap = reinterpret_cast<HBITMAP>(LoadImage(
GetModuleHandle(NULL),
MAKEINTRESOURCE(IDB_BITMAP1),
IMAGE_BITMAP,
0,
0,
0));

SendDlgItemMessage(
hWnd,
picture_CTRL,
STM_SETIMAGE,
IMAGE_BITMAP,
reinterpret_cast<LPARAM>(hBitmap));

Обратите внимание, что согласно документации вы несете ответственность за удаление растрового изображения, когда вы закончите с ним.

РЕДАКТИРОВАТЬ: Обратите внимание, что у меня были две проблемы в моей исходной версии кода, вызванные копированием и вставкой из вопроса. Я не смог передать ручку как LPARAM я и я использовали BM_SETIMAGE вместо STM_SETIMAGE, Я также добавлю примечание в ответ, что, как указал Коди Грей, документация MSDN для функции или сообщения скажет вам, можете ли вы использовать MAKEINTRESOURCE,

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]