0

尽管我在我的应用程序中使用 DirectX 和一个常用功能,但如果应用程序是使用特定参数启动的WinMain,我想创建到控制台的输出(使用常用功能)。std::cout让我们保持简单:如果用户使用参数调用应用程序,则应该显示--help一些帮助(使用);boost::program_options否则,一切都应该通过创建一个窗口等来正常工作。

即使在我的 Windows 应用程序中,如何将输出写入控制台(如果应用程序是通过控制台调用的)?


背景信息:一般的想法是,在运行我的游戏引擎之前,我将能够运行一些工具(外部工具或包含在引擎中)并获得它们的输出。


目前的做法。我现在有两个独立的应用程序,一个启动器和引擎,但是如果可能的话,我希望将它们合并。

4

1 回答 1

2

如果您只需要为您的 WinMain GUI 应用程序创建一个控制台窗口,那么您需要调用AllocConsole函数。每个进程仅限一个。

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 子系统。为此,您需要两个 .exe,因此您当前的方法是正确的。

于 2013-03-10T16:10:40.077 回答