0

我有一个与 Office 相当相关的 Office 插件(本机 C++)。我正在做的一件事是找到主窗口的 HWND,并将该窗口子类化。在各种情况下,我还 GetDC 那个窗口,并在 Office 文档上绘制我自己的东西。

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

我有一个直接在 HDC 上绘制的“装饰”功能。在 Office 2010 之前,我在 Office 处理 WM_PAINT 以及 WM_KEYUP 之后立即调用了我的方法。那工作得很好。

从 Office 2013 开始,WinWord 在我无法跟踪的时候让客户区感到痛苦。此外,我什至找不到 Office 在重新绘制其客户区时使用的任何 GDI API。我在 DrawText (gdi) 或 DrawString (gdi+) 上挂了一个钩子。

据我所知,即使不调用 GetDC、BeginPaint 或 ReleaseDC,WinWord 也会重新绘制客户区(因此 - 删除我的装饰)!

我几乎没有想法。我会欣赏 Office 可以用来触摸屏幕的任何想法吗?我已设置为挂钩任何功能和/或 Windows 消息 - 只是找不到必须挂钩的内容。任何其他想法(不需要完整的解决方案 - 只需一个方向就可以了)。任何可以使用的工具(例如是否有任何类似于 FileMon 的 GDI 方法?)将不胜感激。

4

1 回答 1

1

Office 2013 使用 DirectWrite、Direct2D 和 DXGI 将墨水放在屏幕上。当他们这样做时,他们几乎完全避免使用 GDI,因此使用 GetDC/BeginPaint/etc。从未被调用。

请参阅此博客:

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

于 2013-08-11T09:59:10.537 回答