如何从 Win32 C++ 应用程序输出到父控制台窗口?

Dar*_*tom 1 c++ winapi cmd

我有一个 WinAPI/Win32 应用程序。如果我在从命令提示符运行时尝试使用 cin/cout/cerr,它不起作用。我尝试将项目类型从 Windows 应用程序切换到控制台应用程序,但问题是当我通过双击可执行文件正常运行它时会出现一个控制台窗口。

所以我的问题是:有什么方法可以在 Win32 应用程序中将 cin/cout/cerr 与父(调用)控制台窗口一起使用?(如果参数/c或被/?传递,我只想要这种行为,所以如果它不带参数被调用,那么无论它应该启动GUI)。

Rem*_*eau 6

默认情况下,GUI 应用程序没有附加控制台窗口。

当 GUI 应用程序从控制台进程运行时,GUI 应用程序可以使用 AttachConsole()将自身附加到控制台。

或者,如果 GUI 应用程序不是从控制台进程运行,但仍想使用控制台窗口,它可以使用创建自己的控制台窗口 AllocConsole().

一旦 GUI 应用程序连接到控制台,它就可以GetStdHandle()用来获取控制台 STDIN/STDOUT 的句柄,然后重定向cin/cout使用它们(如何取决于您的特定 STL 实现)。

或者,您可以忽略cin/cout并直接使用ReadConsole()WriteConsole()代替。