使窗口保持在所有其他C / Java窗口的顶部
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使窗口保持在所有其他C / Java窗口的顶部,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1584字,纯文字阅读大概需要3分钟。
内容图文
我一直在阅读,发现Java Swing不能在没有可怕的闪烁效果的情况下停留在全屏应用程序之上.这是真的?
闪烁效果:
我有一个线程,每200毫秒将frame.setAlwaysOnTop()更新为true.
如果是的话,我正在寻找一种方法的替代方法,并且正在阅读有关C/C++ / C#s SetWindowsPos的信息,那么这似乎会对我有所帮助.但是,在重写程序之前,我想知道是否可以将程序保留在另一个全屏应用程序的顶部.
谢谢
解决方法:
简短的回答:不是,不是.
更长的答案:“全屏”应用程序使用显示的方式与普通Windows GUI应用程序不同.它们的确切工作方式取决于应用程序和操作系统.大多数将利用DirectX或OpenGL API,这些API允许应用程序直接操纵代表屏幕的内存,以及访问GPU的加速功能.这些应用程序通过基本创建一个GUI“窗口”(更像一个面板)来支持,该“窗口”覆盖整个主要显示并且始终在顶部,从而防止了桌面元素永远被绘制在全屏之后应用程式的视窗(以Z顺序排列).然后,该应用程序可以“轻松”访问代表该GUI窗口的显示矩形的内存,因此它可以操纵单个像素,而无需使用消息循环来重新绘制该区域.
在这种情况下,将在应用程序需要时(实际上总是“尽可能快”或“与下一个监视器扫描同步”)绘制显示,而不是在Windows GUI认为合适的时候绘制显示.因此,Windows认为这是个好主意时涂上的任何东西都会闪烁. Windows在GUI的Z顺序中在应用程序的“窗口”上绘制“始终在顶部”窗口,然后通过直接在其矩形上绘制,应用程序在窗口上绘制.这将导致Windows无效并重新绘制窗口,并且循环继续进行.
解决方案不仅是创建“始终位于顶部”的窗口,还需要以编程方式从全屏应用程序的窗口“任务切换”到您的窗口.这可能要求您的应用具有大多数托管运行时无法或不会授予的特权.如果有可能,那么当全屏应用程序出现时,它将最小化(对于您的用户而言,这可能是一个巨大的问题,或者可能不是一个大问题;无论您的应用程序试图告诉我什么,几乎肯定不值得将StarCraft 2会话最小化在线混战中).
内容总结
以上是互联网集市为您收集整理的使窗口保持在所有其他C / Java窗口的顶部全部内容,希望文章能够帮你解决使窗口保持在所有其他C / Java窗口的顶部所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。