Я получил этот код для загрузки растрового изображения:Win32 Bitmap не будет загружать
HBITMAP reg_hbmCS = NULL;
LRESULT CALLBACK WndProc(HWND hRegWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_CREATE:
reg_hbmCS = LoadBitmap(NULL, MAKEINTRESOURCE(IDB_CSBITMAP));
if(!reg_hbmCS)
MessageBox(hRegWnd,
"No se ha podido cargar el icono del programa.\r\n"
"Pruebe a reinstalar el programa para solucionar este problema.",
"Atención", MB_ICONEXCLAMATION | MB_OK);
break;
case WM_CLOSE:
DeleteObject(reg_hbmCS);
DestroyWindow(hRegWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hRegWnd, message, wParam, lParam);
}
return 0;
}
Проблемы в том, что reg_hbmCS не будет загружаться, так что я не битовая карта доступна (предлагающим с коробкой сообщений в (if !reg_hbmCS)
Вот мой resources.h:.
#ifndef RESOURCES_H
#define RESOURCES_H
#ifndef IDC_STATIC
#define IDC_STATIC -1
#endif
#define IDI_CSICO 101
#define IDB_CSBITMAP 201
#endif // RESOURCES_H
И мой resources.rc:
#include <windows.h>
#include "resources.h"
IDI_CSICO ICON "CS-Nursing.ico"
IDB_CSBITMAP BITMAP DISCARDABLE "CS-Nursing.bmp"
Если это необходимо, я использую Code :: Blocks 12.11 на WindowsXP SP3. Любая помощь будет высоко оценена.
Это в DLL или EXE? DLL необходимо кэшировать HINSTANCE для загрузки DLL, чтобы вызовы LoadBitmap (et.al.) переходили на ресурсы DLL, а не на вызывающие EXE. –
Вы проверили с помощью средства просмотра ресурсов/редактора, что ваш растровый файл, по сути, скомпилирован в ваш исполняемый файл? –
Также убедитесь, что ваше растровое изображение действительно. Многие инструменты производят растровые изображения с недопустимыми заголовками растровых изображений. Откройте растровое изображение в MS Paint и сохраните его снова. – IInspectable