2012-01-03 88 views
1

我想编写一个程序,该程序可以在Windows 7中创建一个填充整个屏幕的透明覆盖图,最好使用C++和OpenGL。但是,如果用另一种语言编写的API使得这个超级简单,我会更愿意使用它。一般来说,我认为我必须能够以某种方式读取已经在屏幕上的像素。创建一个创建全屏覆盖的程序

使用相同的方法屏幕捕捉软件用于从屏幕上获取像素,然后重新绘制它们将起初工作,但问题是如果屏幕更新。然后,我的程序将不得不最小化/关闭并重新出现,以便我能够读取底层像素。

+0

如果你只是让你的窗口变得透明,Windows本身会确保它下面的窗口会首先绘制自己,从而使屏幕捕获变得多余。你有没有研究过Windows的透明度?你到目前为止尝试过什么吗? – Default 2012-01-03 11:07:56

+0

嗨基督教 - 我想知道你最终如何解决这个挑战?愿意从您的经验中学习! – Ghopper21 2012-10-28 22:40:59

回答

2

Windows Vista在PIXELFORMATDESCRIPTOR:PFD_SUPPORT_COMPOSITION中引入了一个新标志。如果使用Alpha通道创建OpenGL上下文,即PFD的AlphaBits非零,则Windows合成器会遵守OpenGL帧缓冲区的Alpha通道。

然后通过创建一个全屏幕,无边界,未修饰的窗口,您可以获得这种exakt类型的覆盖图。但是,此窗口仍然会接收所有输入事件,因此您必须执行一些繁琐的工作并手动将所有输入事件传递到基础窗口。