j'ai rencontré ce problème lors de l'écriture d'un jeu de démineur. J'ai utilisé bitmap pour les nombres, les mines et les blancs. Je pense que je l'ai enregistré correctement eux dans le fichier de ressourcesWin32 LoadImage génère l'erreur 1812 et 1813
IDI_0 BITMAP "D:\\User\\Mark\\Documents\\C++\\win32\\MineSweeper\\MineSweeper\\empty.bmp"
IDI_1 BITMAP "D:\\User\\Mark\\Documents\\C++\\win32\\MineSweeper\\MineSweeper\\1.bmp"
IDI_2 BITMAP "D:\\User\\Mark\\Documents\\C++\\win32\\MineSweeper\\MineSweeper\\2.bmp"
IDI_3 BITMAP "D:\\User\\Mark\\Documents\\C++\\win32\\MineSweeper\\MineSweeper\\3.bmp"
et le fichier d'en-tête
#define IDI_0 200
#define IDI_1 201
#define IDI_2 202
#define IDI_3 203
et je les charge comme celui-ci
h0 = (HBITMAP)LoadImage(hInst, MAKEINTRESOURCE(IDI_0), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
h1 = (HBITMAP)LoadImage(hInst, MAKEINTRESOURCE(IDI_1), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
h2 = (HBITMAP)LoadImage(hInst, MAKEINTRESOURCE(IDI_2), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
h3 = (HBITMAP)LoadImage(hInst, MAKEINTRESOURCE(IDI_3), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
J'ai aussi vérifié le fichier exe avec ResourceHacker et trouvé toutes les bitmaps là-bas.
Ce que je ne comprends pas est que seulement parfois (~ 50%) quand je lance le jeu apparaît soit
Error 1812: The specified image file did not contain a resource section.
ou
Error 1813: The specified resource type cannot be found.
Mais si je les charge de fichiers comme celui-ci
h0 = (HBITMAP)LoadImage(NULL, L"D:\\User\\Mark\\Documents\\C++\\win32\\MineSweeper\\MineSweeper\\empty.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
h1 = (HBITMAP)LoadImage(NULL, L"D:\\User\\Mark\\Documents\\C++\\win32\\MineSweeper\\MineSweeper\\1.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
h2 = (HBITMAP)LoadImage(NULL, L"D:\\User\\Mark\\Documents\\C++\\win32\\MineSweeper\\MineSweeper\\2.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
h3 = (HBITMAP)LoadImage(NULL, L"D:\\User\\Mark\\Documents\\C++\\win32\\MineSweeper\\MineSweeper\\3.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
tout fonctionne bien.
Des idées ou des conseils seraient appréciés. Merci!
Votre paramètre hInst est peut-être incorrect, vous pouvez enregistrer tous les paramètres et déterminer si la ressource existe avec 'FindResource'. – Jichao
@Jichao Merci pour votre réponse! J'ai utilisé le code de démarrage généré par vs2013, y compris les init de classe de la fenêtre et les registres. Quelque chose que je dois changer là-bas? et des idées pourquoi ça ne va que mal la moitié du temps? –
Juste une supposition; mais seriez-vous prêt à changer LR_CREATEDDIBSECTION à LR_DEFAULTCOLOR? Je ne suis pas familier avec cette valeur. – user3282085