2 u012739736 u012739736 于 2013.11.06 11:01 提问

MFC中OnPaint函数显示BMP图片的问题

为什么我在MFC对话框中,在OnPaint函数中加入以下代码,BMP图像不能显示啊~~·
BITMAP bm;
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
CDC memdc;
CDC dc;
memdc.CreateCompatibleDC(&dc);/
bmp.GetBitmap(&bm);
CBitmap *bmpold=memdc.SelectObject(&bmp);/
dc.BitBlt(20,20,bm.bmWidth,bm.bmHeight,&memdc,0,0,SRCCOPY);
memdc.SelectObject(bmpold);
memdc.DeleteDC();
bmp.DeleteObject();
求助啊求助啊

1个回答

qq2399431200
qq2399431200   2014.01.02 16:15

1.先看看这行代码:
bmp.LoadBitmap(IDB_BITMAP1);
改为:
BOOL bLodBit = bmp.LoadBitmap(IDB_BITMAP1);
调试查看bLodBit是否为TRUE(值为1),返回TRUE后再看

2.dc.BitBlt(20,20,bm.bmWidth,bm.bmHeight,&memdc,0,0,SRCCOPY);
改为:
BOOL bDcBlt = dc.BitBlt(20,20,bm.bmWidth,bm.bmHeight,&memdc,0,0,SRCCOPY);
调试查看bDcBlt是否为TRUE(值为1),返回TRUE后再看

3.在你的OnPaint函数中“CDialog::OnPaint();”这句代码的位置,
如果在放在OnPaint函数的最开始位置,如:
CMyDialog::OnPaint()
{
CDialog::OnPaint();
//然后是你的代码
}
效果出不来就在“CDialog::OnPaint();”位置不对,应该如下:
CMyDialog::OnPaint()
{
//然后是你的代码
CDialog::OnPaint();
return ;
}
详细请看:http://blog.csdn.net/qq2399431200/article/details/17739087
这篇博文。

Mark20140102:提完问题后就不管不问,或是解决了也不会来补充下解决的方法,让人很气愤。在此给出回答是本着让遇到同样问题的同仁看到解决方法,不是来为你解决问题,你太不负责任!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
关于bmp图像,在Onpaint中画图时一闪而过的问题
关于在Onpaint中画图一闪而过的问题 :
使用ATL库中的CImage类加载图片作为对话框背景
使用CImage类库要在应用程序的stdafx.h文件中添加CImage类的包含文件:#includ在对话框程序中映射WM_ERASEBKGND消息,添加如下的函数BOOL CQQDlg::OnEraseBkgnd(CDC* pDC){ CImage m_imgBK; m_imgBK.Load("Miss.bmp");  m_imgBK.Draw(pDC->GetSafeHdc(),0,0,256
在OnPaint()中使用CBitmap加载位图资源
在OnPaint()中使用CBitmap加载位图资源
MFC实现静态和动态显示bmp图片
代码下载路径:http://download.csdn.net/detail/dafenqie/9690529 1、通过LoadImage函数静态显示一个bmp文件: 1)增加一个pictureControl控件,修改ID为:IDC_STATIC_PICTURE 2)增加一个按钮,caption改为“静态显示图片” 3)双击按钮,生成按钮的点击响应函数,在函数中增加如下代码,其
【数字图像处理】一.MFC详解显示BMP格式图片
本文主要是讲述《数字图像处理》系列栏目中的文章.主要详细介绍了BMP图片格式,同时使用C++和MFC显示BMP格式,主要结合自己的《数字图像处理》课程和以前的项目叙述讲解.从四个方面进行叙述:BMP图片格式定义,显示BMP图片的基本步骤,MFC显示BMP图片,运行结果及总结.希望文章对大家有所帮助,如果文章中有错误或不足的地方希望大家海涵.
MFC 显示bmp图片
首先从工具箱中选择一个Picture Control 和3个Button到对话框 取Picture Control 的 ID 为IDC_STATIC_PICURE 然后添加bmp资源文件 双击静态显示1.添加代码: void CMFCdrill4Dlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 CBitmap bitm
MFC学习之 背景贴图及控件透明
在CDialog类中进行贴图,一般放在OnPaint()函数中,因为窗口更新时,使用它来进行重绘。在OnPain()中贴图的源码如下: [cpp] view plaincopyprint?    [cpp] view plaincopyprint? void C***Dialog::OnPaint(
MFC中onPaint()函数的使用
MFC中onPaint()函数的使用 WM_PAINT是窗口每次重绘都会产生的一个消息。 OnPaint是对这个消息的反应函数 mfc 的 CWnd::OnPaint 没做什么,只是丢给系统处理。 一 : 先执行OnEraseBkgnd,擦除背景(如果想自绘控件,这个函数直接return TRUE就可以了,这样就不会擦除背景,不会闪) OnEraseBkG
MFC 单文档中添加OnPaint
单文档中添加OnPaint()方法:   1、在xxxView.h里添加 // 生成的消息映射函数 protected:  DECLARE_MESSAGE_MAP() public:  afx_msg void OnPaint(); 2、实现OnPaint 3、在xxxView.cpp里添加(要是少了这步,那么会进入不到OnPaint函数里) BEGIN
WM_PAINT介绍及OnPaint()函数的作用原理
*  WM_PAINT是窗口每次重绘都会产生的一个消息。 *  MFC中 OnPaint()是对这个消息的反应函数( mfc 的 CWnd::OnPaint() 没做什么,只是丢给系统处理,下面就是介绍它在系统中的处理流程)     关于 WM_PAINT 消息     系统会在多个不同的时机发送WM_PAINT消息:当第一次创建一个窗口时,当改变窗口的大小时,当把窗口从另一个窗口背后