问题描述
- 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.先看看这行代码:
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:提完问题后就不管不问,或是解决了也不会来补充下解决的方法,让人很气愤。在此给出回答是本着让遇到同样问题的同仁看到解决方法,不是来为你解决问题,你太不负责任!
时间: 2024-08-31 20:13:55