【问题标题】:C# WPF Overlay for fullscreen applications?C# WPF 覆盖全屏应用程序?
【发布时间】:2021-03-07 01:51:16
【问题描述】:

我正在制作一个显示您正在按下的键的应用程序,我想知道是否有办法将一些图像小部件覆盖在屏幕顶部,这样即使您处于全屏模式,它们也能保持在顶部.我在 Visual Studio 中使用 WPF。指向教程的链接或下载到示例的链接将大有帮助!

【问题讨论】:

    标签: c# wpf visual-studio overlay fullscreen


    【解决方案1】:

    您尚未明确是希望小部件出现在所有窗口之上,还是只显示在您的 WPF 窗口之上。

    如果您希望它仅出现在您的窗口上,请考虑使用an adorner

    如果您希望它出现在所有窗口中,请使用this WindowSinker class,它会拦截您窗口的 WM_SETFOCUS 消息并调用 SetWindowPos 来设置 HWND_TOPMOST 标志。

    【讨论】:

    • 小部件是否仍然能够显示在处于全屏模式的应用上?
    • 是的。我在多个生产环境中使用它来显示 WPF 窗口,这些窗口出现在系统上运行的所有其他应用程序之上,包括以全屏模式运行的应用程序。
    • 我将 Window Sinker 类中的每个“HWND_BOTTOM”替换为“HWND_TOPMOST”。我尝试通过在 Window_Loaded WindowSinker.WindowExtensions.SetSinker(???, Topmost); 上放置以下内容在我的窗口上使用它,因为问号它要求我提供一个依赖对象。我在里面放什么?
    • 我在那个答案中使用了 WindowSinker 类,没有任何变化。然后,在我需要保持在顶部的 WPF 窗口中,我创建了一个成员变量:WindowSinker sinker;。最后,在那个窗口的构造函数中我做了sinker = new WindowSinker(this);,然后是sinker.Sink();,然后是通常的InitializeComponent();
    • 另外,请确保您使用的是我直接链接到的 James M 答案中的代码,而不是接受的答案。它包含 2 个类的代码,即 WindowSinkerWindowExtensions
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    相关资源
    最近更新 更多