wangyang891201
2013-11-06 03:01
采纳率: 50%
浏览 3.3k

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条回答 默认 最新

  • shmiloveyou 2014-01-02 08: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:提完问题后就不管不问,或是解决了也不会来补充下解决的方法,让人很气愤。在此给出回答是本着让遇到同样问题的同仁看到解决方法,不是来为你解决问题,你太不负责任!

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题