我看过Windows应用程序既可以同时使用Window也可以使用控制台。我发现自己时不时地对此感到疑惑,并且记得当我进行研究时始终找不到解决方案。
有没有一种方法可以对WinApi C ++应用程序进行编程,以使我可以像在链接器选项SUBSYSTEM:CONSOLE
下一样,输出到控制台?换句话说,我可以使用WinMain
和WndProc
等打开一个窗口,但是我也想做std::cout
,std::cin
和std::wcout
。一个好的用例是使用控制台记录内容,并使用Window作为主要应用程序。
最好改用std::system()
并从中启动cmd
然后输出吗?我不这么认为,但是我当然不知道。
Windows 8.1,x86_64,MSVS 2017。
答案 0 :(得分:2)
使用AttachConsole
附加到现有控制台,或使用AllocConsole
创建新的控制台。然后根据需要将cin
/ cout
重定向到该控制台(取决于编译器特定运行时实现的要求)。或者,只需使用ReadConsole
/ WriteConsole
即可。
答案 1 :(得分:0)
是的,将子系统设置为WINDOWS,将/ ENTRY(入口点)设置为WinMainCRTStartup
(如果使用的是Unicode,则设置为wWinMainCRTStartup
)。您甚至可以仅针对Debug配置进行设置,因此控制台不会针对Release出现。