如题所说:我在Dialog里面的一个Button 中,当点击时候,绘出图形,但是移动时有擦除现象。
不知道这个窗口的重绘如何改动,才能没有这个状况??谢谢

解决方案 »

  1.   

    把你的图形在OnDraw里面画出来就行了。
      

  2.   

    OnEraseBkgnd(CDC* pDC) 函数直接return TRUE;
    屏蔽系统的返回值这个改了没有
      

  3.   

    按钮移动一定产生了的按钮WM_PAINT消息,在响应这则消息中,用invalidateRect刷新父窗口即可
      

  4.   

    我新加了一个成员函数:
    BOOL CPropGearsGeometrical::OnEraseBkgnd(CDC *pDC)
    {
        return   TRUE;  }
    但是绘出图形,还是会消失啊。不知道您说的是这个意思啊?
      

  5.   

    那我在加一个OnPaint()的函数吗?如果我想不加,现在能改这个问题吗?
      

  6.   

    怎么没有专家给支招了???如果我现在不是画在OnPaint()中,直接在我的按钮中画,将如何改才能使我的窗口重绘???
    谢谢
      

  7.   

    响应WM_MOVE, 在响应函数中添加:
    SendMessageW(WM_PAINT);
    或者其它绘图代码
      

  8.   

    你这个想法是不合理的
    绘图操作都应该放到OnPaint中去完成
    在按钮里只是设置必要的数据并且调用Invalidate
      

  9.   

    自己新建一个button类,在DrawItem里面自绘按钮吧
      

  10.   

    程序中的画图都是画到OnPaint()函数里的,如果你想用BUTTON来控制,可以在OnPaint函数中画图的地方加一个判断,然后在BUTTON里更改这个BOOL值,更改后调用Invalidate刷新一下就好了
      

  11.   

    思路灵活一些 不要只盯着名字看不是OnDraw 找找有没类似的字眼  OnPain不就是了嘛因为你画图是放在点击函数里,所以就只画了一次但是当需要刷新的时候,电脑就不画了
      

  12.   

    但是我放在OnPaint()中问题出现了,我的界面没有了,而且还弹出了个错误对话框。
      

  13.   

    但是在那个Button中可以画啊,就是不能重绘。
      

  14.   

    在哪都可以画东西
    不过最合理的重绘机制就是通过OnPaint实现
    否则你就要自己做一套机制在所有可能需要重绘的地方调用你的绘制代码
      

  15.   

    就是比如,有个BUTTON,按下后,ONBUTTON函数响应绘图。。
    不过绘图都要在Onpaint中,我前段时间也遇到这样的问题,在别处会重绘还原
    LZ说的把程序弄到Onpaint中会弹出那个错误,我也有遇到过差不多的,是代码的问题
      

  16.   

    但是在Button后面点击的时候,能绘出图形啊。
      

  17.   

    是这样的,我是在Button后面,点击进行的绘图。能绘出,也没有问题。但是有重绘的问题,同样的代码我放在Onpaint()中,弹出了错误对话框。
      

  18.   

    放在button里是能绘图,但是当改变对话框:比如切换窗口后,程序会重绘Onpaint里面的程序,但Onbutton的不会执行,所以会还原~~
    同样的代码放到Onpaint里你看看代码有什么问题
    比如我那个扫雷,在Onpaint里面执行了几次CDC memDC所以弹出错误,执行一次就够了
    你自己看看或是把Onpaint的贴出来让大家分析下吧~~
      

  19.   

    你也可以另外写个函数MyDraw(),根据你Button的事件传递变量绘图,然后再Onpaint()里面调用MyDraw();
      

  20.   

    还是在onpaint()函数中把你要输出的内容输出