虽然我在我的应用程序中使用通常WinMain
函数的DirectX,但如果应用程序是使用特定参数启动的话,我想要创建输出到控制台(通常为std::cout
)。让我们保持简单:如果用户使用--help
参数调用应用程序,则应显示一些帮助(使用boost::program_options
);否则,一切都应该通过创建一个窗口等来工作。
即使在我的Windows应用程序中,如何将输出写入控制台(如果应用程序是通过一个调用的)?
背景信息:一般的想法是,在运行我的游戏引擎之前,我可以运行一些工具(外部工具,或包含在引擎中)并获得它们的输出。
当前的方法。我现在有两个独立的应用程序,一个启动器和引擎,但是我希望尽可能合并它们。
答案 0 :(得分: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,所以你当前的方法是正确的。