3

cmd.exe のような内部プログラムを Windows で全画面モードで実行できるようなものを作りたいと思っています。

以前は、Windows XP では Alt + Enter を使用して cmd.exe をフル スクリーン モードで使用できましたが、Windows Vista からは WDDM ( Windows Display Driver Model ) のためにそのようなことが無効になりました。

そのようなことを行うための最良の方法は、「フルスクリーンの DirectX/Win API プログラムを作成し、その中に別の内部プログラムをレンダリングする」ことだと思います。

DirectX/Win API を使用してフル スクリーン プログラムを作成する方法は知っていますが、フル スクリーン プログラムで別のプログラムを実行する方法を想像できません。

別の方法は、「c​​md.exeまたは別の内部プログラムを使用して入出力ストリームを操作し、DirectXフルスクリーンプログラムでフルスクリーンで情報を解析するだけ」です。

そのような質問に対するあなたの提案は何ですか?

4

1 に答える 1

1

これを DirectX 経由で行うのは悪夢であり、非常に複雑です。

画面のサイズである一番上のウィンドウを作成する方がはるかに優れています。ウィンドウのサイズに境界線用のスペースを追加し、ウィンドウ自体だけが表示されるように画面からわずかに離して配置する必要があるため、これよりも少し複雑です。

C/C++ では、GetSystemMetrics関数を使用してこれを行います。

  • SM_CYCAPTION - タイトル バーの高さです。
  • SM_CYFRAME - かなり大きなフレームの高さです。
  • SM_CXFRAME - かなり大きなフレームの幅です。

これは、次のような幅/高さとその位置を持つ 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 や、これが導入する他のすべてのドライバー ベースの地獄に依存しない、フル スクリーンで "表示" されるウィンドウができました。

于 2012-10-23T10:27:02.760 に答える