其API的Microsoft Word(办公室2013)是使用烤漆屏幕(Which API Micr

2019-10-29 16:01发布

我有这相当与Office涉及的Office插件(原生C ++)。 其中一个我做的是找到主窗口的HWND的事,子类化窗口。 在各种各样的场合我也说的GetDC窗口,搽在Office文档的顶部我自己的东西。

我还使用IAT挂钩各种Windows API的(相当标准)。

我有一个“装饰”功能直接在HDC借鉴。 直到Office 2010时,我打电话给我的方法办公室后立即WM_PAINT和WM_KEYUP后也进行处理。 这是工作的罚款。

与Office 2013开始,WINWORD在痛苦的时候,我没有跟踪客户区。 此外,我甚至无法找到重绘它的客户区时办公室使用任何GDI API。 我把对DrawText的(GDI),或的DrawString(GDI +)挂钩。

据我所知,WINWORD将重绘客户区(因此 - 删除我饰),即使没有调用GetDC,调用BeginPaint,或ReleaseDC!

我几乎没了主意。 我将不胜感激任何想法,办公室可以使用触摸屏? 我设置挂钩的任何功能和/或Windows消息 - 只是找不到什么有被钩住。 任何其他的想法(无需完整的解决方案 - 只是一种方向将被罚款)。 可以使用任何工具(例如,有什么相似的FileMon的GDI方法?)可以理解的。

Answer 1:

办公室2013年使用的DirectWrite,Direct2D和DXGI为把墨水在屏幕上。 当他们这样做,他们几乎完全避免使用GDI,因此的GetDC /调用BeginPaint /等。 从来没有被调用。

看到这个博客:

http://blogs.msdn.com/b/murrays/archive/2012/07/29/office-adopts-new-windows-display-technology.aspx



文章来源: Which API Microsoft Word (Office 2013) is using the paint the screen