The CClientDC class is derived from CDC and takes care of calling the Windows functionsGetDC at construction time andReleaseDC at destruction time. This means that the device context associated with a CClientDC object is the client area of a window.from MSDNThat's mean you can 
CClientDC(pWnd);
but you can NOT use this
CDC(pWnd);

解决方案 »

  1.   

    CDC  是CClientDC  的基类,CDC所有的函数在CClientDC中都可以使用,CClientDC是客户区设备环境,如果声明一个CClientDC dc(this);那么这个dc就是当前程序的客户区。其余没什么区别。
      

  2.   

    CClientDC,比如你应用程序打开时,主窗口的范围就是CClientDC了
      

  3.   

    CDC是DC(Device Context,设备上下文或设备环境)相关类,,显示有显示设备环境,打印有打印设备环境,可以理解为:DC提供一个环境,你在这个环境中进行“绘图”,图将绘制在“位图”上。对于显示环境来说,显示器就是其“位图”,对于打印环境来说,打印机就是其“位图”。CDC管理计算机所有提供的设备环境,这一系列类的基类,正如CDialog是CFileDialog等通用对话框类的基类一样。
    而CClientDC类是从CDC派生,封装了与“窗口客户区”相关的显示DC,其构造函数调用了GetDC函数,而析构函数调用了ReleaseDC函数。
    简单的CDC实现例子
    TEXTMETRICtm;      //存放字体信息的结构
    CDC* pDC=GetDC();
    pDC->GetTextMetrics(&tm);    //获取当前系统的字体信息
    简单的CClientDC实现例子
    CClientDC dc(this);    //在当前窗口中创建CClientDC对象
    CRect myRect;
    GetClientRect(&myRect);     //获得当前客户区信息赋予myRect
    dc.Ellipse(myrc);    //用CClientDC对象绘制一个椭圆,改椭圆充满客户区窗口
      

  4.   

    CDC
    CClientDC
    CWindowsDC
    CPaintDC
    好好学习,天天向上