挂钩表格重绘

时间:2010-09-08 09:42:23

标签: winforms hook paint

我正在寻找一种方法来覆盖第三方应用程序的图形输出,包括一些直线,圆弧等。应用程序接受窗口的句柄,然后它将显示其输出。

使用VC ++我在Visual Studio中组装了一个Windows窗体应用程序,它在窗体的onPaint方法中绘制(非静态)内容。当然,每当其他应用重绘时,将此表单的句柄传递给其他应用程序,会覆盖我的图形内容。

我可以以某种方式挂钩这个重绘过程,在其他应用程序重绘后添加我的图形吗?用我绘制的透明面板覆盖表格可能是另一种选择。但控件的真正的透明度似乎是Windows自身的一个问题...

1 个答案:

答案 0 :(得分:1)

如果没有从应用中收到通知,您就无法轻松完成此操作。如果它不提供它们,则需要使用SetWindowsHookEx()设置全局钩子,以便您可以看到WM_ERASEBKGND和WM_PAINT消息。这很难做到,你不能在托管代码中编写这样的钩子。因为它需要将DLL注入目标进程。

唯一的另一个选择是在表单顶部放置透明叠加层。另一种设置了TransparencyKey属性的表单。我在this thread中的回答中提供了实现此目的所需的基本代码。你只需要调整它就可以永久性。