什么是设备上下文(思考ing)

来源:互联网 发布:英文查重软件 编辑:程序博客网 时间:2024/05/21 15:51

接触MFC时间也不短了,对设备上下文的认识还是模糊的. 以下是输入法编程要用到的"输入法上下文"的一个口语化解释, 由此有利于对设备上下文的理解.

输入法上下文(HIMC):HIMC是什么?在输入法编程时必然要接触到输入法上下文这个术语,刚接触时听起来实在是半懂不懂。由于输入法是一个插件,它需要和调用它的应用程序通讯,在输入法中生成的编码及重码信息保存在哪里应用程序才能正确的读取呢?答案就在于输入法上下文。输入法上下文是由User.exe(一个系统进程)为应用程序分配的内存句柄,在应用程序中启动的输入法在这块内存中写入数据,User.exe再将数据传递到应用程序。

设备上下文(DC)我们不妨这样理解:

两个实体: 1. 一个窗口对象, 2. 要显示此窗口的设备(显示器,打印机等).

三个问题: 1. 这两个对象怎么通讯呢?  2.假设要在窗口上(100,200)位置显示的"ABCXXX", 这个字符串和坐标信息存放在哪里,怎样传给设备呢? 3. 假设要知道设备上显示的字体大小或背景色,那么窗口对象从哪里去得到呢?

答案就在于设备上下文^-^ 。一个窗口对象创建时就会被分配一块专门用于设备的内存,窗口要显示的内容就写到这里,要获取设备的属性也从这里拿(不知道能不能把设备上下文理解为窗口对象和设备之间的一块共享内存呢, 我想大概就是这样.). 而我们对这块内容的合法访问方式就是, 建一个CDC对象,把对象和这块内存关联起来,通过CDC的方法进行通讯.  所以,兼容DC的理解就是: 生成这块内存的一个拷贝,在拷贝中做好显示内容处理,再把内容复制到原DC.
原创粉丝点击