请教大家:什么是设备描述表和设备场景?HDC是什么?

解决方案 »

  1.   

    转载,来自:http://www.sz-rainbow.com/bbs/printpage.asp?BoardID=13&ID=74
    --  什么是设备场景关于设备场景,叫法颇多,有些书上说为设备环境、显示场景,更常见的叫做设备描述表或设备描述体。当然你爱怎么叫随你的便,我还是喜欢说为设备场景。
    那么究竟什么是设备场景呢? 设备场景是一种Windows对象,而Windows则是一种图形环境,其图形系统令人难以自信地灵活和强大。而实质上,Widnows下的所有绘图都是通过设备场景进行的,而不是直接对窗口和设备本身进行。为了说明设备场景,很多书都拿一些现实生活中的现象来进行对照说明。其中,最常见的是把它比喻为一位画家在作画。我想大家都看过画家是如何画画的,最起码是在电影里或者是在道旁的广告牌上作画的画家。我们可以想象一下∶有个风景秀丽的白云山(是我瞎起的名)上,有位画家一只手拿着调色板,另一只手则拿着画笔,面对一个画板正在写风景画。有些书认为画家的调色板相当于设备场景,有些书则认为画板相当于设备场景,说法不一。鉴于这种情况,我认为还是直接去说明设备场景比较好。作为Windows的对象,设备场景实际上是一种Windows内部的数据结构。就象POINTAPI数据结构具有x和y两个属性一样,设备场景同样具有着它自身的属性,只是属性比较多而已,如下表∶设备场景属性属性 默认值
    背景色(Background color) 白色(White)
    背景模式(Background mode) 不透明(Opaque)
    位图(Bitmap) 无(None)
    刷子(Brush) 白色刷子(White brush)
    刷子起点(Brush origin) 0,0
    剪切区(Clipping region) 整个窗口或设备表面(Entire window or device surface)
    调色板(Color palette) 默认调色板(Default palette)
    画笔位置(Pen position) 0,0
    绘图模式(Drawing mode) R2_COPYPEN
    字体(Font) 系统字体
    字间距(Intercharater spacing) 0
    影射模式(Mapping mode) MM_TEXT
    画笔(Pen) 黑色(Black)
    多边形填充模式(Mapping Mode) ALTERNATE
    伸缩模式(Stretching mode) BLACKONWHITE
    文本色(Text color) 黑色(Black)
    视口起点(Viewport origin) 0,0
    视口范围(Viewport extents) 1,1
    窗口起点(Window origin) 0,0
    窗口范围(Window extents) 1,1
    请你多看看这张表,对设备场景都有哪些属性,脑子里应当有个印象。事实上,设备场景的很多属性对应于VB中的Form、PictureBox、Text等窗体或控件的属性。比如,字体、背景色、绘图模式等等。可想而知,很多学VB的朋友尽管并不知道什么叫设备场景,但实质上都不知不觉地使用了设备场景。可以说,设备场景是Windows编程中最重要的概念之一。
    对于设备场景,有些朋友可能一时不大好理解,这很自然,不用担心谁都是一样。不知对你能否作为一个帮助,我是把设备场景想象成一种配套的(包括画板、调色板、画笔、刷子等)的绘画工具。其中画板是最重要的,其他的东西都是为这个画板服务的。如过你创建了一个设备场景,就等于是你从百货商店买来了这一套绘画工具,从而具备了绘画的条件。但,你的房间总不是那么宽敞的。为了继续绘出别的画、继续购买新的绘画工具,无用的工具应当及时清理掉。因为设备场景本身是占用内存的。不要担心这会降低运行速度,对计算机来说创建一个设备场景,再删掉一个设备场景,那都是瞬息之间的事情,根本谈不上什么浪费时间,绝对不像跑一趟百货商店那么麻烦、费时。对于绘图,你应当认识的一点是,绘图并不是简单地指绘画,输出文本也是一种绘图过程。尽管如此,API函数中图形函数与文本函数大体都是各自各的。绘画和写文本都是在同样的设备场景中进行,这一点很重要。
      

  2.   

    hDc应该是一个场景的句柄吧,按VB中的数据类型,这应该是一个LONG类型的数据变量。是操作系统对每个窗口对象进行标识。
    ---------
    以上纯属个人理解,敬请高手斧正
      

  3.   

    同意楼上2位。建议你看看Windows C语言程序设计这个书。或Win32下汇编语言程序设计。里面描述很多。
      

  4.   

    看起来是GDI的东西。过时了,也一点都不好学习和使用。OO时代还是用GDI+好一些。不过似乎不是很安全,MS才出了补丁的。
      

  5.   

    HDC就是handle,不过是用于图形设备的