
DC(device context)叫设备环境或者设备描述表,它其实是GDI内部保存数据的一种数据结构。此结构中的属性内容与特定的输出设备(显示器、打印机等)相关,属性定义了GDI函数的工作细节。 总之,你要使用GDI绘图函数,就需要一个DC句柄。MFC中把和DC相关的都封装成类。CDC是一个抽象基类,可以访问整个显示器和打印机等。CClientDC类和窗口客户区关联,能用于显示客户区相关内容。
设备描述表(DC)是Windows中的一种数据结构,它包含GDI需要的所有关于显示界面情况的描述字段,包括相连的物理设备和各种各样的状态信息。
图形显示功能是由显卡来完成的,你想要利用显卡的图形显示功能来完成你的图形输出,怎么办,给你一块硬件能用吗?好,现在厂商给你提供一个驱动程序,给你一些调用的接口,你就可以访问了吧。但这种访问是在驱动层,很麻烦,更麻烦的是,每个厂商给自己显卡提供的驱动程序还不一样,那我们写的图形输出程序岂不是换台机器(不一样的显卡)就得修改,一个字:累,两个字:麻烦。现在一个救世主出现了,Bill兄,他让他的兄弟们在驱动之上实现一个抽象层,当然也可以认为是一个中间层的软件代码(我们管他叫设备上下文如何,也叫设备描述表DC),由这些代码和驱动打交道(当然,这些驱动得支持Windows平台)。然后,他将这种实现封装到动态链接库中提供给我们使用,我们能通过动态链接库暴露的API函数(相关概念见VC下半部分),得到一个这种实现(可以说是一种资源)的句柄,设备上下文的句柄(HDC),利用的这个句柄,就好像有了访问这中实现的钥匙了,以后就可以,剩下的参照VC上半部分的内容。
设备描述表DC是一个定义一组图形对象及其属性、影响输出的数据结构。windows提供设备描述表,用于应用程序和物理设备之间进行交互,从而提供了应用程序设计的平台无关性。设备描述表又称为设备上下文,或者设备环境。
设备描述表是一种数据结构,它包括了一个设备(如显示器和打印机)的绘制属性相关的信息。所有的绘制 *** 作通过设备描述表进行。设备描述表与大多WIN32结构不同,应用程序不能直接访问设备描述表,只能由各种相关API函数通过设备描述表的句柄(HDC)间接访问该结构。
设备描述表总是与某种系统硬件设备相关。比如屏幕设备描述表与显示设备相关,打印机设备描述表与打印设备相关等等。
屏幕设备描述表,一般我们简单地称其为设备描述表。它与显示设备具有一定的对应关系,在windows GDI界面下,它总是相关于某个窗口或这窗口上的某个显示区域。通常意义上窗口的设备描述表,一般指的是窗口的客户区,不包括标题栏、菜单栏所占有的区域,而对于整个窗口来说,其设备描述表严格意义上来讲应该称为窗口设备描述表,它包含窗口的全部显示区域。二者的 *** 作方法完全一致,所不同的仅仅是可 *** 作的范围不同而已。
windows 窗口一旦创建,它就自动地产生了与之相对应的设备描述表数据结构,用户可运用该结构,实现对窗口显示区域的GDI *** 作,如划线、写文本、绘制位图、填充等,并且所有这些 *** 作均要通过设备描述表句柄了进行。
要说设备描述表就必须先说GDI(图形设备接口)。我们要在程序窗口上显示图形或文本等,就可以使用这些GDI函数在程序上“画画”、“写字”。设备描述表(DC)实际上是GDI内部保存的数据结构。设备描述表中的有些值是图形化的“属性”,这些属性定义了一些GDI函数工作的情况,如:文本颜色、图形填充的情况等。HDC是设备描述表句柄类型,句柄可以简单的理解为指针,被定义为32位的无符号整数。
以上内容转自:>
绘图之后为什么要调用 ValidateRect(&m_client);根本没有必要。子控件出现闪烁是因为使整个客户区无效引起的,使客户区无效时,应该把子控件的区域排出在外,这样就不会有闪烁了。
以上就是关于MFC里的DC是什么意思怎么使用DC最好能举个例子说明一下全部的内容,包括:MFC里的DC是什么意思怎么使用DC最好能举个例子说明一下、MFC中关于CDC和FillRgn();、MFC对话框用双缓冲之后子控件出现闪烁怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)