访问位图资源失败,错误代码为0x716

时间:2009-07-26 02:14:33

标签: c++ windows winapi resources

所以我不知道为什么我一直收到这个错误。这是相关的代码:

//////////////////////// 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.");
}

2 个答案:

答案 0 :(得分:1)

您尝试在DLL或加载DLL的应用程序中加载的位图资源是什么?

在DLL中加载资源时,有两种可能的来源,这就是hInstance参数至关重要的原因。

使用从DllMain获得的HINSTANCE参数意味着该资源是DLL的一部分。

如果资源位于加载DLL的应用程序中,则可以将 NULL 作为LoadResource()的第一个参数传递,并且应用程序的资源将是搜索。

来自LoadResource的文档:

  

如果hModule为NULL,则系统加载   来自模块的资源   用于创建当前流程。

希望有所帮助。

-Scott

答案 1 :(得分:0)

错误0x716表示:

  

ERROR_RESOURCE_NAME_NOT_FOUND 1814   (0x716)

     

指定的资源名称不能   在图像文件中找到。

您是否将正确的第一个参数传递给LoadBitmap?

  

的hInstance
      [in]处理可执行文件所针对的模块实例   包含要加载的位图。

资源文件是否正在编译为.res文件并包含在最终的可执行文件中?