如何在 Visual Studio 2010 中加载 bmp 文件

Posted

技术标签:

【中文标题】如何在 Visual Studio 2010 中加载 bmp 文件【英文标题】:How to load a bmp file in visual studio 2010 【发布时间】:2012-09-12 07:37:30 【问题描述】:

我对 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】:

首先测试您的 hBitmap 是否为 NULL,然后调用:

m_picture.SetBitmap( hBitmap );

其他:

    IDB_PICTURE2 只是 resource.h 文件中的一个#define。在编译时它只会被一个数字代替,也就是说,它不是一个可以调用方法的类。 MAKEINTRESOURCE 用于将资源 id 转换为 LPCTSTR 以用于方法。它不会将 hBitmap 转换为资源。 您列出的“错误”只是一些调试信息。这不是真正的错误。如果 LoadBitmap 返回 NULL,则调用 GetLastError 获取更多信息。

【讨论】:

以上是关于如何在 Visual Studio 2010 中加载 bmp 文件的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Visual Studio 2013 中加载 Krypton Toolkit 控件

在 Visual Studio c++ 中创建将在 VB 中加载的 DLL

如何在 Microsoft Visual Studio 中加载 .xml 文件

visual studio2010中C#生成的,ArcGIS二次开发的basetool的dll,注册为COM组件tlb文件,并在arcmap中加载使用

我用 Microsoft Visual Studio 2010 新建一个 C++ 的对话框窗口程序的时候 该如何设置它的窗口类名?谢谢!

Visual Studio 2017 不显示 VS 2010 项目的属性