hDC和CDC有本质区别吗?

解决方案 »

  1.   

    HDC是API定义的数据类型,而CDC是VC对HDC打包后的class,没有本质的区别。
      

  2.   

    当然没有, CDC 是对 hDC 的相关操作进行封装,例如 CDC 的一个 TextOut 函数隐去其错误检测,完全可以简化到这样程度
    CDC:TextOut( int x, int y, const CString& str )
    {
     TextOut( m_hDC, x, y, (LPCTSTR)str, str.GetLength() );
    }m_hDC 就是 CDC 的成员变量 HDC m_hDC;
      

  3.   

    HDC是WINDOWS的一种数据类型,是设备描述句柄。
    而CDC是MFC里的一个类,它封装了几乎所有的关于
    HDC的操作。
    也可以这样说,HDC定义的变量指向一块内存,这块
    内存用来描述一个设备的相关的内容,所以也可以
    认为HDC定义的是一个指针;而CDC类定义一个对象,
    这个对象拥有HDC定义的一个设备描述表,同时也包
    含与HDC相关的操作的函数。
    这与HPEN和CPen,POINT与CPoint之间的差别是一样
    的。
      

  4.   

    CDC有一个 operator HDC() const { return m_hDC; }
    你可以把它当成一个HDC使用