如何理解设备描述表???(转载)

设备描述表是一个定义一组图形对象及其属性、影响输出的图形方式(数据)结构。windows提供设备描述表,用于应用程序和物理设备之间进行交互,从而提供了应用程序设计的平台无关性。设备描述表又称为设备上下文,或者设备环境。     
    设备描述表是一种数据结构,它包括了一个设备(如显示器和打印机)的绘制属性相关的信息。所有的绘制操作通过设备描述表进行。设备描述表与大多WIN32结构不同,应用程序不能直接访问设备描述表,只能由各种相关API函数通过设备描述表的句柄间接访问该结构。   
    设备描述表总是与某种系统硬件设备相关。比如屏幕设备描述表与显示设备相关,打印机设备描述表与打印设备相关等等。   
    屏幕设备描述表,一般我们简单地称其为设备描述表。它与显示设备具有一定的对应关系,在windows   GDI界面下,它总是相关与某个窗口或这窗口上的某个显示区域。通常意义上窗口的设备描述表,一般指的是窗口的客户区,不包括标题栏、菜单栏所占有的区域,而对于整个窗口来说,其设备描述表严格意义上来讲应该称为窗口设备描述表,它包含窗口的全部显示区域。二者的操作方法完全一致,所不同的仅仅是可操作的范围不同而已。   
    windows   窗口一旦创建,它就自动地产生了与之相对应的设备描述表数据结构,用户可运用该结构,实现对窗口显示区域的GDI操作,如划线、写文本、绘制位图、填充等,并且所有这些操作均要通过设备描述表句柄了进行。   
  /***************************************************************************************/   
  书中是这么说的,但是如何理解啊?   
  如果将设备描述表理解成为设备的一种抽象地描述(或者说是硬件在数据结构上一种映射),那么显示设备描述表对应显示器,在编写程序的时候现在假设以GetDC获得设备描述标的句柄。   
  hdc   =   GetDC(hwnd);//获得窗口设备描述表句柄   
  [使用GDI函数]   
  ReleaseDC(hwnd,   hdc);   
  我想知道这个过程和显存的关系。也就是如何通过显存绘制到显示器对应的窗口上的。   
  再确切地说就是GDI绘制既然针对的是设备描述表,那么设备描述表是否在内存中?   
  他和显存之间的关系是什么?

通过设备描述表调用显示卡驱动,由显示卡驱动程序访问显存实现绘图输出,因此在GDI下面是无法直接访问到显存的。这种方式主要是提供了统一的编程界面,使得编程人员不用考虑具体的设备的特性,一切和设备打交道的工作交由系统完成,编程者只要调用统一的GDI函数即可。设备描述表在内存中是存在的。

来源:http://blog.163.com/efjing@126/blog/static/424848482008102711235165/

posted @ 2014-10-22 10:35  龙泽一狼  阅读(173)  评论(0编辑  收藏  举报