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

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

    评论

报告相同问题?

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突