结合基于控制台和基于windows的应用程序
虽然在我的应用程序中,我使用DirectX和一个常用的结合基于控制台和基于windows的应用程序,windows,winapi,console-application,iostream,cout,Windows,Winapi,Console Application,Iostream,Cout,虽然在我的应用程序中,我使用DirectX和一个常用的WinMain函数,但如果应用程序是用特定参数启动的,我可能希望创建到控制台的输出(使用常用的std::cout)。让我们保持简单:如果用户使用--help参数调用应用程序,则应显示一些帮助(使用boost::program_options);否则,一切都应该通过创建窗口等方式正常工作 即使在windows应用程序中,如何将输出写入控制台(如果通过控制台调用应用程序) 背景信息:一般的想法是,在运行我的游戏引擎之前,我将能够运行一些工具(外
WinMain
函数,但如果应用程序是用特定参数启动的,我可能希望创建到控制台的输出(使用常用的std::cout
)。让我们保持简单:如果用户使用--help
参数调用应用程序,则应显示一些帮助(使用boost::program_options
);否则,一切都应该通过创建窗口等方式正常工作
即使在windows应用程序中,如何将输出写入控制台(如果通过控制台调用应用程序)
背景信息:一般的想法是,在运行我的游戏引擎之前,我将能够运行一些工具(外部工具或包含在引擎中的工具)并获得它们的输出
当前方法。我现在有两个独立的应用程序,一个启动器和引擎,但是如果可能,我希望将它们合并。如果您只需要为WinMain GUI应用程序创建一个控制台窗口,那么您需要调用函数。每个进程只能有一个 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
}
#包括
WinMain(…){
//解析命令行并检查是否提供了--help
AllocConsole();//为进程分配控制台窗口
freopen(“CON”,“w”,stdout);//将输出重定向到控制台
printf(…);//测试输出到控制台窗口
FreeConsole();//从控制台窗口分离进程
//继续这里
}
如果您需要在GUI应用程序中使用诸如
printf
之类的函数来显示某些内容,则这将仅根据需要创建控制台窗口。它不会使您的应用程序同时具有控制台和GUI子系统。您需要两个.exe,因此您当前的方法是正确的