当前位置: 首页 > 面试题库 >

使窗口保持在所有其他Windows C / Java之上

包翔
2023-03-14
问题内容

我一直在阅读,发现Java
Swing无法在没有可怕的闪烁效果的情况下停留在全屏应用程序之上。这是真的?闪烁效果:我有一个线程,每200毫秒将frame.setAlwaysOnTop()更新为true。

如果是这样,我正在寻找方法的替代方法,并且正在阅读有关C / C ++ /
C#的SetWindowsPos的信息,那么这似乎会对我有用。但是,在重写程序之前,我想知道是否可以将程序保持在另一个全屏应用程序的顶部。谢谢


问题答案:

简短的回答:不是,不是。

更长的答案:“全屏”应用程序使用显示的方式与普通Windows
GUI应用程序不同。它们的确切工作方式取决于应用程序和操作系统。大多数将利用DirectX或OpenGL
API,这些API允许应用程序直接操纵代表屏幕的内存,以及访问GPU的加速功能。通过基本创建覆盖整个主要显示并且始终在顶部的GUI“窗口”(更像是面板)来支持这些应用程序,以防止桌面元素永远被绘制在全屏之后而被绘制应用程式的视窗(以Z顺序排列)。然后,应用程序可以“轻松”访问代表该GUI窗口的显示矩形的内存,

在这种情况下,将在应用程序需要时(实际上总是“尽可能快”或“与下一个监视器扫描同步”)绘制显示,而不是在Windows
GUI认为合适的时候绘制显示。因此,Windows认为这是个好主意时涂上的所有东西都会闪烁。Windows在GUI的Z顺序中在应用程序的“窗口”上绘制“始终在顶部”窗口,然后通过直接在其矩形上绘制,应用程序在窗口上绘制。这将导致Windows无效并重新绘制窗口,并且循环继续进行。

解决方案不仅是创建“始终位于顶部”的窗口,还需要以编程方式从全屏应用程序的窗口“任务切换”到您的窗口。这可能要求您的应用具有大多数托管运行时无法或不会授予的特权。如果可能的话,那么全屏应用程序将最小化(对于您的用户而言,这可能是一个大问题,也可能不是一个大问题;无论您的应用程序试图告诉我什么,几乎都不值得将StarCraft
2会话最小化在线混战中)。



 类似资料:
  • 问题内容: 我将Python 2与和一起使用,然后使用。 该程序运行良好,但是每次打开该程序时,窗口都会显示为隐藏状态,因此,直到我单击扩展坞上的图标以将其打开时,该窗口才会出现。 有什么方法可以控制此,使该窗口位于应用程序启动时打开的其他窗口之上? 需要澄清的是,在应用程序运行的整个过程中,它不一定都位于最前面。我只需要它在启动时位于其他窗口之上。 问题答案: 如果我接受您提供的代码并添加第一行

  • 问题内容: 我对文件选择器对话框的非常简单的实现似乎有一个问题,该问题要求我每次都尽量减少Netbeans才能到达它,现在特别是在测试中,这非常令人沮丧。 我在网上看到了一些解决方案,包括SO,但似乎没有一个解决之道,而对于我目前的水平,其他解决方案似乎很冗长和复杂。 我的一些尝试包括使用; 我可以设置特定的属性/方法来解决问题吗? 问题答案: 指向,它表示:“如果父级为null,则对话框不依赖可

  • 问题内容: 我有两个Java swing应用程序(意味着在两个JVM中运行)。有什么办法可以在它们之间切换吗?通过Java代码激活另一个应用程序的窗口? 问题答案: 您可以尝试使用JNA。我将使用Maven为您提供一些适用于Windows的代码(或多或少适用于其他系统):(对不起,但我无法正确设置格式) 创建Maven项目,并添加依赖项:

  • 首先,我已经看到了所有其他关于类似的问题和答案,但我需要的是一点不同。 我需要能够在后台关闭所有正在运行的活动(它们正在运行一个线程,当我返回MainActivity时,它们仍然在运行)

  • 问题内容: 我想阻止所有者窗口中的JavaFX弹出窗口。 我这样初始化弹出窗口: 这样,我仍然可以在第一个窗口(窗格窗口)中工作。我想禁用此操作,并且希望用户仅在弹出窗口中工作。 这该怎么做 ? 谢谢。 问题答案: 使用舞台而不是弹出窗口。 在显示该阶段之前,请根据需要将stage.initModality调用为APPLICATION_MODAL或WINDOW_MODAL。还要将stage.ini

  • 我有一个包含以下数据的pyspark dataframe: