如何在visual studio 2010中加载bmp文件

时间:2012-09-12 07:37:30

标签: visual-studio-2010 visual-studio mfc bmp

我是Visual Studio C ++的新手。我试图从我的系统加载一个bmp文件与特定的路径,并在mfc中的图片控件上显示它,但我无法这样做。任何人都可以在这里指导我。我尝试了以下但是我收到了错误..

代码:

filePath = "images/0000.4d.bmp";
ASSERT(filePath);

HBITMAP hBitmap= NULL;
hBitmap = (HBITMAP) LoadImage (
  0, 
  filePath, 
  IMAGE_BITMAP, 
  0, 0, 
  LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);


IDB_PICTURE2.LoadBitmapW(MAKEINTRESOURCE(hBitmap));
m_picture.SetBitmap(IDB_PICTURE2);

当我尝试加载bmp文件时发生错误。谢谢。

错误:

Detected memory leaks!
Dumping objects ->
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {525} normal block at 0x0034B848, 54 bytes long.
 Data: <   x            > 84 CF B1 78 12 00 00 00 12 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp(4500) : {518} client block at 0x0034B708, subtype c0, 56 bytes long.
a CObject object at $0034B708, 56 bytes long
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {511} normal block at 0x0034B1C8, 42 bytes long.
 Data: <   x            > 84 CF B1 78 0C 00 00 00 0C 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp(195) : {510} normal block at 0x0034B170, 24 bytes long.
 Data: <                > E8 03 00 00 00 00 00 00 E9 03 00 00 00 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp(181) : {509} normal block at 0x0034B120, 16 bytes long.
 Data: <                > FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 
c:\documents and settings\raja hadi ashraf\my documents\visual studio 2010\projects\mirrorimage\mirrorimage\mirrorimage.cpp(59) : {505} client block at 0x0034AFB0, subtype c0, 12 bytes long.
a CObject object at $0034AFB0, 12 bytes long
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {494} normal block at 0x0034CDF8, 22 bytes long.
 Data: <   x            > 84 CF B1 78 02 00 00 00 02 00 00 00 01 00 00 00 
Object dump complete.
The program '[0x62C] mirrorImage.exe: Native' has exited with code 3 (0x3).

1 个答案:

答案 0 :(得分:0)

首先测试你的hBitmap是不是NULL然后只调用:

m_picture.SetBitmap( hBitmap );

其他:

  1. IDB_PICTURE2只是resource.h文件中的#define。在编译时,它只会被一个数字替换,即它不是一个可以调用方法的类。
  2. MAKEINTRESOURCE用于将资源ID转换为LPCTSTR以与方法一起使用。它不会将hBitmap变成资源。
  3. 您列出的'错误'只是一些调试信息。这不是实际的错误。如果LoadBitmap返回NULL,则调用GetLastError以获取额外信息。