gpt4 book ai didi

.net - 如何使透明 WPF 窗口位于所有其他窗口之上,但不影响用户输入?

转载 作者:行者123 更新时间:2023-12-01 16:27:38 26 4
gpt4 key购买 nike

我正在尝试开发一个允许人们“在屏幕上绘图”的 Windows 应用程序。

我正在开发:

.NET 3.5C#/WPF

我有一个承载 InkCanvas 的 WPF 窗口,两者都具有透明背景。

窗口 XAML 属性:

ShowInTaskbar="True" ResizeMode="NoResize" Background="Transparent"
WindowStyle="None" AllowsTransparency="True" Topmost="True"

InkCanvas 属性:

Background="#11FFFFFF"

我需要一个事件处理程序来处理以下内容:- 右键单击​​窗口中的任意位置- 按转义键

期望的结果:- WPF 窗口保持在所有其他窗口之上,但不再处于事件状态并且不再接受输入- 可以不再关注 WPF 窗口。来自用户的所有输入都应该转到他们当前的焦点窗口,并忽略带有位于所有内容之上的 inkcanvas 的 wpf 窗口

基本用法示例:该应用程序的用户正在玩游戏。他们停下来在 wpf 窗口/inkcanvas 中绘制一些箭头。他们按 Escape 结束。 wpf 窗口保留在顶部,用户绘制的形状打开,用户的输入返回到他们打开/聚焦的任何窗口。

到目前为止,我已经试过了:

MouseRightButtonUp ::   

mywindow.isenabled = false

我试过了:

mywindow.IsInputMethodEnabled = false

到目前为止还没有工作,wpf 窗口仍然开始抓取用户输入。我不知何故需要使这个窗口显示但没有被激活..即使它已经“使用”了一段时间。

提前感谢您的任何建议!

最佳答案

您可以拦截 WndProc(使用 HwndSource 的 AddHook,如 here 所示)并拦截 WM_NCHITTEST 并返回 HTTRANSPARENT。不过,这只会让它传递给该线程中的其他窗口。另一种选择可能是设置 WS_EX_TRANSPARENT 扩展样式位。有关示例,请参见 this question's answer

关于.net - 如何使透明 WPF 窗口位于所有其他窗口之上,但不影响用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12943387/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com