创建一个创建全屏叠加层的程序

时间:2012-01-03 11:03:10

标签: c++ windows opengl

我想编写一个程序,在Windows 7中创建一个透明的覆盖层,最好用C ++和OpenGL填充整个屏幕。但是,如果有一种用另一种语言编写的API可以让它变得非常简单,那么我也非常愿意使用它。一般来说,我认为我必须能够以某种方式读取屏幕上已有的像素。

使用相同的方法,屏幕捕获软件用于从屏幕获取像素,然后重新绘制它们最初会起作用,但问题是如果屏幕更新的话。然后我的程序必须最小化/关闭并重新出现,以便我能够读取基础像素。

1 个答案:

答案 0 :(得分:2)

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

然后通过创建一个全屏,无边框,未修饰的窗口,您可以获得所需的这种exakt叠加效果。但是,此窗口仍将接收所有输入事件,因此您必须执行一些繁琐的工作并将所有输入事件手动传递给基础窗口。