解决方案一般有两种,都是针对如何知道当前屏幕任一坐标出的
字符的
1. 对每个设备上下文(DC)做一分Copy,并跟踪所有修改上下文(DC)的操作
这种方法更强大,但兼容性不好
2. 采用截获对部分GDI的API调用来实现,如TextOut , DrawText , TextOutEx等,
字典对每次写屏操作进行跟踪.
技术细节就不赘述乐
这种方法也在一些中文系统如中文之星等中采用,另外,有些第三方的字体,
如ADobe等,也是这个方法(参阅<<Undocumented Windows>>(Andrew Schulman))
MY12345提示:无论那种方法,都有潜在的问题,如第一种方法,它在老版本下
时仍是16位方式的(32位技术困难较大),这样就隐含了一个假定:所有
文本输出的32位API都要通过16位的DLL实现,在老版本的确如此,担高版本
就高版本下就不存在这种情况
而且即使是第一种方法也容易带来兼容性的问题,比如博雅和中文之星2.0之间就有
一定的兼容性问题(老版本下)
2007年12月19日