如何在 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++ 的对话框窗口程序的时候 该如何设置它的窗口类名?谢谢!