程序响应鼠标消息,用BitBlt()在客户区贴了一张位图,在窗口改变大小时位图消失了,我怎样重画它使其在改变大小时仍不消失。

解决方案 »

  1.   

    在OnDraw的时候用BitBlt再次画这张位图就可以,可以把位图保存在View的一个数据成员中。
      

  2.   

    OnDraw
    onResize
    or 
    onactivate
      

  3.   

    你要使位图不消失,要在收到WM_PAINT后画出位图而不能在其它地方
      

  4.   

    我用菜单命令更改客户区的底图,在窗口未最大化时,ondraw()函数还能起作用,可等到窗口最大化后,却不行了,不能将图片更新,请问在命令响应函数里加上什么能调用ondraw()函数,或者有别的办法;
      

  5.   

    画图的程序应在OnDraw()中,而如果你要响应菜单的命令画图可以这样做:
    在处理菜单命令时修改一自定的标志:
    bDraw=true;
    并调用Invalidate(true)
    在OnDraw()中判断这个标志:
     if(bDraw)
      {
        ....//画图程序
      }
      

  6.   

    to :lbird(蓝鸟) 十分感谢,还有几个问题想请教一下:
    我在向客户区画图时,在将另一副位图画在原来客户区的位图上时为什么必须重新创建内存设备环境而不能用原来的cdcmem(假如不deletedc).还有在使用bitmap1.LoadBitmap(IDB_BITMAP1);bmp1.GetBitmap(&bm);cdcmem.SelectObject(&bitmap1)之后,如何让其加载另一张位图时不出错;
      

  7.   

    可以啊,
    cdcmem.selectobject(&newbitmap)
    调用后设备上下文就选入新的位图
    bitmap1要另载一张位图应先将原位图删除
    bitmap1.DeleteObject();
    再重新加载:
    bitmap1.loadbitmap()