我想制作这样的东西,我可以在全屏模式下在cmd.exe中运行我的内部程序。
早些时候,在Windows XP中,我可以使用Alt + Enter在全屏模式下使用cmd.exe,但是在Windows Vista中由于WDDM(Windows显示驱动程序模型)而禁用此类内容。
我认为,制作此类内容的最佳方法是:“制作全屏DirectX / Win API程序,然后在其中渲染另一个内部程序”。
我知道如何使用DirectX / Win API创建全屏程序,但无法想象如何在我的全屏程序中渲染另一个程序。
另一种方法是:“只需使用cmd.exe或其他内部程序操作输入/输出流,然后在DirectX全屏程序中全屏解析信息”。
您对此类问题有何建议?
答案 0 :(得分:1)
通过DirectX这样做将是一场噩梦,而且非常复杂。
最好创建一个与屏幕大小相同的最顶层窗口。它比这更复杂,因为你需要在窗口大小的边框上添加空间,然后将它稍微偏离屏幕,这样只有窗口本身可见。
在C / C ++中,您可以使用GetSystemMetrics函数执行此操作。
这意味着您要创建一个1024x768屏幕的窗口,其宽度/高度及其位置如下所示。
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和所有其他基于驱动程序的地狱。