如何在Windows(C ++ WinApi)的“ SUBSYSTEM:WINDOWS”下显示并输出到控制台(cmd)

时间:2018-10-17 01:41:32

标签: c++ c windows visual-studio winapi

我看过Windows应用程序既可以同时使用Window也可以使用控制台。我发现自己时不时地对此感到疑惑,并且记得当我进行研究时始终找不到解决方案。

有没有一种方法可以对WinApi C ++应用程序进行编程,以使我可以像在链接器选项SUBSYSTEM:CONSOLE下一样,输出到控制台?换句话说,我可以使用WinMainWndProc等打开一个窗口,但是我也想做std::coutstd::cinstd::wcout。一个好的用例是使用控制台记录内容,并使用Window作为主要应用程序。

最好改用std::system()并从中启动cmd然后输出吗?我不这么认为,但是我当然不知道。

Windows 8.1,x86_64,MSVS 2017。

2 个答案:

答案 0 :(得分:2)

使用AttachConsole附加到现有控制台,或使用AllocConsole创建新的控制台。然后根据需要将cin / cout重定向到该控制台(取决于编译器特定运行时实现的要求)。或者,只需使用ReadConsole / WriteConsole即可。

答案 1 :(得分:0)

是的,将子系统设置为WINDOWS,将/ ENTRY(入口点)设置为WinMainCRTStartup(如果使用的是Unicode,则设置为wWinMainCRTStartup)。您甚至可以仅针对Debug配置进行设置,因此控制台不会针对Release出现。