我正在寻找一种 AlphaBlend 子窗体的方法,如果可能的话,使用分层窗口,因为它后面会有交互式控件。

问题是我在常规 TForm 中有一个组件可以绘制多个视觉层(绘图、图片...)。在某些时候,我需要在此表单上实例化一个编辑器控件(就地),该控件将涉及我的控件之外的各种标准输入控件(编辑框、复选框等),但是我想覆盖使用 alpha 混合编辑的图层前面的图层(以及 WS_EX_TRANSPARENT 使其可点击)。

我首先想到使用子表单(无边框 TForms 为组件的父级),并且工作正常,直到 AlphaBlished TForm 根本不是 alphablend,但一旦成为父级就变得不透明......

然后,我尝试取消 alphablend 表单的父子关系,将其设置为 fsStayOnTop,并通过对相关事件做出反应,将其保留在屏幕上组件的前面,这可行,但这不是一个真正令人满意的解决方案:alphablished StayOnTop 表单也位于应用程序的其他模态和非模态表单的前面,如果用户决定将它们移动到组件的前面...

那么,关于如何让子表单进行字母混合还有其他想法吗?(或者表现得像这样)

有帮助吗?

解决方案

根据 MSDN 的说法,你运气不好,因为 WS_EX_LAYERED 不能用于子窗口.

也许当您的表单/应用程序失去焦点时,您可以隐藏所有编辑器表单,这至少可以防止它们位于其他窗口之上。尽管如此,还是不​​太令人满意……

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top