CClientDC dc(this); 可以得到DC。
绘图的代码应该放在OnDraw中,这样在窗口被覆盖后可以有机会重绘。

解决方案 »

  1.   

    当然你也可以在别的地方绘图
    只要你取得设备DC就行了。
    不过那样如果窗口改变:比如说最小化时就没法更新,这是你只好自己想办法保存。
    当然最好是在OnDraw()函数中绘图,这样窗体会自动重绘!
      

  2.   

    那你的意思就是说,只要我从OnDraw函数的DC引用出来,那么任何自己建的类都能执行绘图操作。是这样吗?
    还有,窗口重绘不是Invalidata()和WM_ONPAINT在起作用吗?什么是自动重绘?
    我自己的类里如果用了Invalidata()不也一样可以通知窗口重绘吗?
    不知道我的理解对不对,请指教!
      

  3.   

    OnDraw是一个能输出到屏幕和打印机的绘画,而OnPaint只输出到屏幕,OnPrint只输出到打印机, 在这里你可以根据你自己的需要来决定放在什么地方重画,只要你能正确地得到这个DC则就可以绘画,请注意CPaintDC、CClientDC、CDC、CWindowDC等的差异。