我试图画在另一个进程之上,而它是在沉浸全屏模式。我知道使用GDI是可能的,我有两个问题:
谢谢您:)
发布于 2014-09-01 08:46:54
在Windows中,有两种创建全屏窗口的可能性:
第一个选项允许您更改分辨率、位深度和刷新速率等显示属性,而第二个选项在这里被绑定使用与普通(窗口)桌面应用程序相同的选项。
只有在使用选项2实现全屏应用程序时,才有可能用顶层窗口覆盖全屏窗口。然而,在这种情况下,任何能够创建透明顶层窗口的代码都可以(无论是纯WinAPI/GDI,还是更复杂的代码,如Qt)。
使用选项1,如描述所示,全屏应用程序对显示具有独占的绘图权限。尝试在其前面引入另一个窗口,将要么将全屏应用程序最小化,要么将其强制进入窗口模式。
在这种情况下,有些黑客仍然可以获得覆盖,但它们是相当具有侵入性的。例如,使用基于D3D的全屏应用程序,您可以连接到D3D的现在时例程,并在显示回缓冲区之前让D3D绘制覆盖。这里最重要的一点是,绘制覆盖层的代码是从全屏幕应用程序的进程中执行的,因为这是唯一允许在这一点上绘制到屏幕上的进程。
请注意,一些应用程序(特别是受反欺骗软件保护的电子游戏)不太喜欢它,如果您以这种方式将代码注入到这个过程中。
请注意,Win API还为所谓的硬件覆盖提供了一个接口,它允许在独占的全屏应用程序之上绘图。不幸的是,这种机制在消费硬件上不被广泛支持,并且可能无法工作,这取决于您试图在哪个显卡上运行它。
https://stackoverflow.com/questions/25601362
复制相似问题