How can I output to the parent console window from

2019-08-20 05:26发布

问题:

I have a WinAPI/Win32 application. If I try to use cin/cout/cerr when it is run from a command prompt, it doesn't work. I tried switching the project type from Windows Application to Console Application, but the problem is that a console window appears when I run it normally by double-clicking the executable.

So my question is: Is there any way I can use cin/cout/cerr with the parent (calling) console window in a Win32 application? (I only want this behaviour if parameter /c or /? were passed, so if it is called with no arguments then no matter what it should launch the GUI).

回答1:

A GUI app does not have a console window attached to it by default.

When a GUI app is run from a console process, the GUI app can use AttachConsole() to attach itself to the console.

Or, if the GUI app is not run from a console process, but still wants to use a console window, it can create its own console window using AllocConsole().

Once the GUI app is attached to a console, it can use GetStdHandle() to get handles to the console's STDIN/STDOUT, and then redirect cin/cout to use them (how is dependent on your particular STL implementation).

Or, you can ignore cin/cout and just use ReadConsole() and WriteConsole() directly instead.



标签: c++ winapi cmd