为什么绘图时不能直接用窗口句柄,往窗口上绘,还要搞个DC。查资料发现这是Device Context,也不清楚到底起了什么用。
看网上有人说这就相当于是Canvas,起一个画布的功能,好像像是那么回事,到底如何呢?
还看有人提到Screen和Canvas的Handle都叫做DC,但是是不一样的东西,这又怎么解释?

解决方案 »

  1.   

    GDI中每个Window都有唯一的窗口Handle,也都有唯一的DC handle与之对应。
    可以由函数
    HDC GetDC(
      HWND hWnd   // handle to window
    );
    从一个窗口句柄中获得对应的DC handle.
    DC有自己的属性,例如画刷、字体、画笔等等GDI对象,可以通过SelectObject改变之。
    还有一组函数如,Textout,FillRect,Bitblt等等可以在DC上“画”一些东西,完成后就显示在对应的窗体上了。
    但一个DC并不一定对应一个窗口句柄,可以创建Memory DC,由:CreateCompatibleDC。
    你说的Canvas在Delphi中见过,VC里没有。
    GDI+听说就没有DC了
    PS:以上是个人理解,我也是菜鸟!
      

  2.   

    窗口就是窗口,DC只是一个绘画工具,它操作的是画布(实际上就是一个位图),窗口显示需要一个画布,要画东西就得用DC。
      

  3.   

    多谢各位,刚接触GDI不久,不是很懂,现在稍微懂些了