我有一个WinAPI / Win32应用程序。如果在命令提示符下运行cin / cout / cerr时尝试使用它,则无法使用。我尝试将项目类型从Windows应用程序切换为控制台应用程序,但是问题是当我通过双击可执行文件正常运行该控制台时,会出现一个控制台窗口。
所以我的问题是:在Win32应用程序中,可以通过父(调用)控制台窗口使用cin / cout / cerr吗? (我仅在传递了参数/c
或/?
的情况下才需要这种行为,因此,如果不带任何参数调用它,那么无论它应启动GUI是什么。)
答案 0 :(得分:3)
GUI应用程序默认情况下没有附加控制台窗口。
从控制台进程运行GUI应用程序时,GUI应用程序可以使用AttachConsole()
将自身附加到控制台。
或者,如果GUI应用程序不是从控制台进程运行的,但仍想使用控制台窗口,则可以使用AllocConsole()
创建自己的控制台窗口。
将GUI应用程序附加到控制台后,便可以使用GetStdHandle()
获取控制台的STDIN / STDOUT的句柄,然后重定向cin
/ cout
以使用它们(如何取决于您的特定STL实现。
或者,您可以忽略cin
/ cout
,而直接直接使用ReadConsole()
和WriteConsole()
。