我正在寻找一种很好的方法来在我自己不拥有的本机 Windows 窗体上呈现叠加层,最好使用可用于 .NET 的库(WinForms、GTK#、...)。准确地说,我想在窗口的给定位置显示一些标签或文本框。
设备上下文和 System.Drawing:我目前正在做的是直接绘制到其他窗口的设备上下文上,这会导致闪烁,因为其他应用程序的一部分会以不可预测的间隔重绘。因此,我将不得不使用钩子魔法来捕捉它的 WM_PAINT 事件,但这实际上并没有我想去的那么远,除非没有更简单的方法。
带有可见子标签的透明窗口覆盖:我尝试的另一种技术是创建一个具有其他窗口大小的 Windows.Forms.Form,使用 TransparencyKey 使只有子可见。这似乎很难纠正,因为我不希望窗口是最上面的窗口,而只是在外部窗口上方的一个Z 级。好处是,我可以为其添加更多行为,因为我实际上可以处理点击事件等。
您将如何实现它/处理上述两种技术中的问题?