Следующий пример кода работает для меня на Windows 10 (SHLoadDIBitmap
API кажется недопустимым для Windows 10. Вместо этого я использую LoadImage
API.). Вы можете обратиться к.
коду C ++ в процедуре диалогового окна:
case WM_INITDIALOG:
hImage = LoadImage(NULL, L"full_path_to\\image3.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_DEFAULTSIZE);
if (NULL == hImage)
errCode = GetLastError();
hwd_static_img = GetDlgItem(hDlg, IDC_STATIC6);
SendMessage(hwd_static_img, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hImage);
return (INT_PTR)TRUE;
Сценарий ресурса в файле project_name.r c:
CONTROL "",IDC_STATIC6,"Static", SS_BITMAP,37,133,136,109
Два примечания:
- Убедитесь, что файл изображения является допустимым растровым файлом . Например, вы можете нарисовать картинку и сохранить ее как растровое изображение, используя mspaint.exe. Если вы переименуете файл с
.PNG
на .BMP
, LoadImage
вернет дескриптор NULL
, но GetLastError
вернет 0
, что означает отсутствие ошибок. - Убедитесь, что установлено
SS_BITMAP
stati c стиль управления для управления изображением (IDC_STATIC6
).
Кстати, нет необходимости помещать файл изображения в один каталог с вашим проектом или EXE. Укажите правильный полный путь к файлу изображения.