c++ - 如何在 Windows (C++ WinApi) `SUBSYSTEM:WINDOWS` 下显示和输出到控制台 (cmd)

标签 c++ c windows visual-studio winapi

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

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

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

Windows 8.1、x86_64、MSVS 2017。

最佳答案

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

关于c++ - 如何在 Windows (C++ WinApi) `SUBSYSTEM:WINDOWS` 下显示和输出到控制台 (cmd),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52846179/

相关文章:

c - 将数组值分配给 C 中的 typedef struct 数组变量

c# - 模拟 .NET 中的可等待计时器

windows - Pyspark上saveAsTextFile()中命令字符串异常中的(null)条目

c++ - 使用 qmake/gcc 有条件地禁用警告?

c++ - 最大相等字符串子数组

c - char * 指针可以指向什么(是不是像 void *)?

C:连接动态分配的字符串

windows - 无法删除Windows 7服务

c++ - 如何在 gdb 中打印 `std::array` 内容?

c++ - 如何在输出运算符中测试 std::showbase 或 std::noshowbase?