在一般的情况下,例如在CXXXView类中的某个函数中可以通过CClientDC clientDC(this);的形式得到环境对象,既而可以通过clientDC.MoveTo()或者clientDC.LineTo()的形式进行绘图。在我的程序中自定义了一个类(该类不继承于MFC既有的任何一个类)并在类中需要有个画图函数,但是不能通过 CClientDC clientDC(this)这个形式得到环境变量对象,所以问问大家,这个情况该如何解决?

解决方案 »

  1.   

    如果你这个类是供某个窗口用来画图的的,那么在在构造的时候传入一个窗口指针。以后用这个指针定义CClientDCclass myclass
    {
      myclass(CWnd* pWnd) { m_pWnd = pWnd }  draw() {
         CClientDC clientDC(m_pWnd);
         clientDC.MoveTo( ... );
      }  CWnd* m_pWnd;
    }
         
      

  2.   

    楼 上的正确,
    还有可以得到某一知道句柄的窗口的画图对象
    HDC dc=::GetDC(hwnd);
    再画图就可以了
      

  3.   

    但是那个m_pWnd怎么得到?也就是说myclass(CWnd* pWnd) { m_pWnd = pWnd }这个构造函数的实参是怎么传进来的呢?
      

  4.   

    你必须在CWnd派生类里面调用你的类:
    CMyClass myclass(this);
    或者你通过一个全局变量来保存CWnd指针