需要在一个dialog显示的时候,在dialog背景和其上的一个CEdit控件中画上简单图形。将画图函数放在OnPaint中调用时,图案不停的重绘,不知道如何让停止下来。另外,调用函数时如果注释掉CPaintDC dc(this); // device context for painting,则还可以看见不断重绘,如果不注释,则什么都看不见。这么做对吗?多谢!

解决方案 »

  1.   

    应该是重载 ondrawitem吧,在这个里面处理
      

  2.   

    是不是在OnPaint中调用了Invalidate之类的了
      

  3.   

    一不能在OnPaint里调用Invalidate之类的,另一个是WM_ERASEBKGND消息的处理。
      

  4.   

    我又修改了几次,感觉上应该与注释掉CPaintDC dc(this); // device context for painting有关,如果保留此句,则刚画出来的图片不能显示(应该是显示后又被消掉)。但是拖动窗口移动,将窗口部分放出屏幕外,再拖回来,就可以看见显示的图形。而且不是不停的重绘。ondrawitem好像不对,因为打开窗口时,该函数没有被调用。
      

  5.   

    在OnPaint所有操作完了以后调用一下
    CDialog::OnPaint();
      

  6.   

    回复人: pomelowu(羽战士) ( ) 信誉:118  2004-08-25 14:32:00  得分: 0  
     
     
       在OnPaint所有操作完了以后调用一下
    CDialog::OnPaint();
      对于直接在dialog上画的图形,这句解决没有问题。
    现在就是画在其中CEdit里的东西,调用了这句,将会被擦掉。