2012-01-03 72 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類型的覆蓋圖。但是,此窗口仍然會接收所有輸入事件,因此您必須執行一些繁瑣的工作並手動將所有輸入事件傳遞到基礎窗口。