0

アプリケーションで通常の関数でDirectXを使用していますが、アプリケーションが特定のパラメーターで開始された場合、WinMainコンソールへの出力を(通常で)作成したいことがあります。std::cout物事を単純にしましょう。ユーザーが--helpパラメーターを使用してアプリを呼び出すと、ヘルプ(を使用boost::program_options)が表示されます。それ以外の場合は、通常、ウィンドウなどを作成することですべてが機能するはずです。

Windowsアプリケーションでも、コンソールに出力を書き込むにはどうすればよいですか(アプリケーションがコンソールから呼び出された場合)。


背景情報:一般的な考え方は、ゲームエンジンを実行する前に、いくつかのツール(外部ツール、またはエンジンに含まれているツール)を実行して、それらの出力を取得できるというものです。


現在のアプローチ。現在、ランチャーとエンジンの2つの別個のアプリケーションがありますが、可能であればそれらをマージすることを検討しています。

4

1 に答える 1

2

WinMain GUI アプリケーションのコンソール ウィンドウを作成することだけが必要な場合は、AllocConsole関数を呼び出す必要があります。プロセスごとに 1 つだけに制限されています。

C での例 ...

#include <stdio.h>

WinMain( ... ) {

    // parse the command line and check if --help is given

    AllocConsole(); // allocates console window for your process

    freopen("CON", "w", stdout); // redirects output to console

    printf( ... ); // test output to the console window

    FreeConsole(); // detaches your process from the console window

    // continue here

}

これは、GUI アプリケーション内からのような関数を使用して何かを表示する必要がある場合にのみ、オンデマンドでコンソール ウィンドウを作成します。printfアプリケーションがコンソールと GUI サブシステムの両方を持つようになるわけではありません。そのためには 2 つの .exe が必要なので、現在のアプローチが適切です。

于 2013-03-10T16:10:40.077 に答える