mfc导入不了bmp图片

mfc导入不了bmp图片,第1张

你想问mfc导入不了bmp图片怎么办,在程序里设置重新设置。

1、建一个单文档的MFC程序。

2、插入->资源->Bitmap->导入。

3、插入->资源->对话框->新建。

4、找到图片控件。

5、在对话框的空白处画一个矩形。

6、右键->属性。

7、双击对话空,建立一个对话空的类,取名(比如:Tupian)->确定。

8、在resources中点开menu。

9、增加一个菜单项,右键属性。

10、继续右键对话框菜单项,右键->建立类向导。

11、在此文档的最前面加上头文件#includeTupian.h。

12、编辑运行即可。

用记事本打开工程目录下的*.rc文件,手动添加bitmap。

例如:

IDC_BITMAP_1 BITMAP "res\\test.bmp"

之后在resource.h里定义ID: #define IDC_BITMAP_1 100

首先你的CBitmap控件要有BS_BITMAP样式

((CButton*)GetDlgItem(IDC_BUTTON_TEST))->ModifyStyle(0, BS_BITMAP)

其次,你的m_bmp不能随意销毁,默认情况下CBitmap的父类CGdiObj析构的时候会删除它所持有的HGDIOBJ对象。用Detach将GDI对象和CGdiObj对象分离

HBITMAP hBitmap = (HBITMAP)m_bmp.Detach()

合起来就是

CBitmap m_bmp

m_bmp.LoadBitmap(IDB_BITMAP1)

HBITMAP hBitmap = (HBITMAP)m_bmp.Detach()

((CButton*)GetDlgItem(IDC_BUTTON_TEST))->ModifyStyle(0, BS_BITMAP)

((CButton*)GetDlgItem(IDC_BUTTON_TEST))->SetBitmap(hBitmap)

注意:这样的话你的这个hBitmap对象如果没有注意自己释放,就发生内存泄漏了。如果这个图片在整个程序中都要用到,那么这样写没问题,只要你不要每次要用到的时候都来一次LoadBitmap就好。每次都来LoadBitmap会不会发生泄漏、泄漏会有多严重,我就不知道了。目测会泄漏而且挺严重


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11501243.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存