2009-07-26 4 views
1

Je ne sais donc pas pourquoi je continue à recevoir cette erreur. Voici le code correspondant:L'accès à une ressource bitmap échoue avec le code d'erreur 0x716

//////////////////////// In resource.h /////////////////////////// 
//{{NO_DEPENDENCIES}} 
// Microsoft Visual C++ generated include file. 
// Used by Freestyle.rc 
// 
#define IDB_BITMAP1      101 

// Next default values for new objects 
// 
#ifdef APSTUDIO_INVOKED 
#ifndef APSTUDIO_READONLY_SYMBOLS 
#define _APS_NEXT_RESOURCE_VALUE  102 
#define _APS_NEXT_COMMAND_VALUE   40001 
#define _APS_NEXT_CONTROL_VALUE   1001 
#define _APS_NEXT_SYMED_VALUE   101 
#endif 
#endif 

//////////////////////// In the resource file //////////////////// 
// Microsoft Visual C++ generated resource script. 
// 
#include "resource.h" 

. 
. 
. 

///////////////////////////////////////////////////////////////////////////// 
// 
// Bitmap 
// 

IDB_BITMAP1    BITMAP     "NOP.bmp" 


//////////////////////// In DllMain: ///////////////////////////// 
// Save the global module we're attached to other files can access it. 
g_hLocalModule = hModule; 

UnsafePrintToLog(SIMPLE_FORMAT_STRING, "Starting session..."); 

// Display the splash screen. 
CSplash splashScreen(IDB_BITMAP1); 


//////////////In CSplash::CSplash(WORD resourceID) ////////////// 
BitmapSplash = LoadBitmap((HINSTANCE)g_hLocalModule, MAKEINTRESOURCE(resourceID)); 

if(BitmapSplash == NULL) 
{ 
    volatile int temp = GetLastError(); 
    Exit("Could not load the splash screen bitmap."); 
} 

Répondre

1

est la ressource bitmap que vous essayez de charger dans la DLL, ou dans l'application qui a chargé la DLL?

Lorsque les ressources du chargement dans une DLL, il existe deux sources possibles, ce qui explique pourquoi le paramètre hInstance est crucial.

Utilisation du paramètre HINSTANCE que vous obtenez de DllMain signifie que la ressource fait partie de votre DLL.

Si la ressource est située dans l'application qui a chargé votre DLL, vous pouvez passer NULL dans comme premier argument de LoadResource(), et sera recherché les ressources de l'application.

De la documentation LoadResource:

Si hModule est NULL, le chargement du système La ressource du module qui a été utilisé pour créer le processus en cours.

espoir qui aide.

-Scott

0

Erreur 0x716 signifie:

ERROR_RESOURCE_NAME_NOT_FOUND 1814 (0x716)

Le nom de ressource spécifié ne peut pas être dans le fichier d'image.

Est-ce que vous passez à LoadBitmap le premier paramètre correct?

hInstance
[en] poignée à l'instance du module pour lequel le fichier exécutable contient le bitmap que vous voulez charger.

Le fichier de ressources est-il compilé dans un fichier .res et inclus dans l'exécutable final?

+0

1. Je passe dans LoadBitmap le paramètre hInstance qui me est donné par DllMain. 2. Oui. Il compile bien. Je peux dire parce que j'ai aussi des informations de version liées, et il affiche très bien. 3. Cette réponse est donnée si vous avez lu le code. –

+0

Juste avant l'appel à LoadBitmap pouvez-vous confirmer que g_hLocalModule a la même valeur que celle qui a été chargée depuis la Dll? –

+0

Oui, j'ai déjà. –

Questions connexes