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

时间:2018-10-15 23:07:52

标签: c++ winapi cmd

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

所以我的问题是:在Win32应用程序中,可以通过父(调用)控制台窗口使用cin / cout / cerr吗? (我仅在传递了参数/c/?的情况下才需要这种行为,因此,如果不带任何参数调用它,那么无论它应启动GUI是什么。)

1 个答案:

答案 0 :(得分:3)

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

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

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

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

或者,您可以忽略cin / cout,而直接直接使用ReadConsole()WriteConsole()