HDC、CDC、CClientDC、CWindowDC、CPaintDC这些DC都快把我搞得头都大了,还有兼容DC又是什么东西,这些DC应该怎么用啊,有没有那位大侠能解释一下或者提供一下参考资料。郁闷啊。。

解决方案 »

  1.   

    慢慢来撒,hdc是dc的句柄,cdc是一个封装的dc类,后面这三个dc就是使用的场合稍有区别,都是派生自cdc的,第一个是客户区dc,经常用,第二个是窗口dc,针对整个窗口绘图,cpaintdc好像只在onpaint函数中使用吧
      

  2.   

       CDC是MFC对HDC的封装,CDC和HDC可以相互转换:
       HDC hdc = pDC->GetSafeHdc(); // pDC is CDC*,由CDC得到HDC
       CDC* pDC = CDC::FromHandle(hdc);//由HDC得到CDC
      

  3.   

    全是DC,以及DC的类,不同情况下使用的DC
      

  4.   

    hdc是dc的句柄,cdc是类,由于mfc有cdc类所以mfc可以用cdc对象管理dc,而windows只认句柄不知道有cdc类,使用句柄管理dc,所以才有了hdc,其他的乱七八糟的dc都是cdc的派生类,各有各的特点,就如同cwnd和cframewnd一样,兼容dc只是个叫法,他根据一个dc对象建立一个新的memory dc,你完全可以写个相同功能的函数叫不兼容dc。
      

  5.   

    看孙鑫老师的视频教程http://www.sunxin.org/video/vc.htm
      

  6.   

    CClientDC、CWindowDC这两个尽量不用吧,它们对于WS_CLIPCHILDREN属性是忽略的。CPaintDC是MFC里面用得最多的,实际上CDC*往往是CPaintDC的对象。
      

  7.   

    兄弟:不要管那些XXDC,只要记住怎么用HDC就可以了,所有的DC类,地层都是在折腾HDC,不如你直接学会玩HDC.别搭理那些鸟DC,那些DC,都可以提炼出HDC的,提出来就像CDC *pDC;提炼HDC:pDC->m_hDC;搞到HDC自己用API画什么不行?
      

  8.   

    呵呵,顶楼主,本人也是刚学MFC,不足两个月,先看的《深入浅出MFC》也可把我给整得要死