您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

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

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

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

java 2022/1/1 18:29:52 有333人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶