2012-10-23 25 views
3

我想做出這樣的東西,我可以在Windows中運行我的內部程序,如全屏模式下的cmd.exe。在DirectX/Win API程序中全屏渲染內部窗口程序

此前,在Windows XP中,我可以使用Alt + Enter鍵使用cmd.exe,在全屏模式,但是從Windows Vista這樣的事情是因爲WDDM(Windows顯示驅動模型)的禁止。

我認爲,做出這樣的事情最好的辦法是:「做一個全屏的DirectX/Win的API程序,然後在它渲染另一內部程序」。

我知道如何創建一個使用的DirectX/Win的API全屏程序,但無法想象如何呈現在我的全屏程序的其他程序的執行。

另一種方法是:「只是爲了與cmd.exe的或另一個內部程序的輸入/輸出流操縱,然後在在DirectX全屏程序全屏解析信息」。

對這樣的問題你有什麼建議?

回答

1

通過DirectX做到這一點將是一場噩夢,而且非常複雜。

您是好得多createing那就是屏幕的大小最頂層窗口。它比這更復雜一點,因爲您需要在窗口大小的邊框上添加空間,然後將其放置在屏幕外部,使其只顯示窗口本身。

在C/C++,你會使用GetSystemMetrics功能做到這一點。

  • SM_CYCAPTION - 標題欄的高度。
  • SM_CYFRAME - 是一個相當大的框架的高度。
  • SM_CXFRAME - 是一個相當大的框架的寬度。

這將意味着你創建一個窗口爲一個1024×768的屏幕有一個寬度/高度,其位置如下。

const int cxFrame = GetSystemMetrics(SM_CXFRAME); 
const int cyFrame = GetSystemMetrics(SM_CYFRAME); 
const int cyCaption = GetSystemMetrics(SM_CYCAPTION); 

const int winWidth = 1024 + (cxFrame * 2); 
const int winHeight = 768 + (cyFrame * 2) + cyCaption; 

const int winPosX = -cxFrame; 
const int winPosY = -cyFrame - cyCaption; 

你現在有「出現」,充分屏幕,將工作在幾乎任何Windows系統存在,並且不依賴於DirectX和所有其他車手基於地獄,這將引入一個窗口。