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会不会发生泄漏、泄漏会有多严重,我就不知道了。目测会泄漏而且挺严重
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)