如何在"SUBSYSTEM:WINDOWS"下显示并输出到Windows(C++ WinApi)上的

How to show and output to the console (cmd) on Windows (C++ WinApi) under `SUBSYSTEM:WINDOWS`

本文关键字:quot Windows C++ WinApi 上的 输出 SUBSYSTEM WINDOWS 显示      更新时间:2023-10-16

我见过同时使用窗口和控制台运行的Windows应用程序。我发现自己时不时地想知道这个问题,我记得每当我研究它时,我都找不到解决方案。

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

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

Windows 8.1, x86_64, MSVS 2017.

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

是的,将子系统设置为 WINDOWS,将/ENTRY(入口点(设置为WinMainCRTStartup(如果您使用的是 unicode,则设置为wWinMainCRTStartup(。您甚至可以仅为调试配置设置它,因此控制台不会为发布显示。