如何在GUI应用程序中写入控制台

背景:我们开发win32应用程序,并在windows上使用“Thompson Toolkit”来给我们一个类似unix的shell,我们用它作为命令行。

我们有一个我们想要写入控制台的GUI程序(带有WinMain和消息循环),但是即使从控制台启动程序,printf等也不起作用。 我们怎样才能从GUI程序写入控制台? 我们需要在那里打印文本,这样一个自动化的构build系统可以显示错误消息等等。

谢谢。

总之,你需要连接一个控制台。 有关详细信息和准备使用的代码,请参阅http://www.codeproject.com/KB/dialog/ConsoleAdapter.aspx

在Visual Studio项目设置的某处,你可以打开一个控制台,假设你正在使用VS. (不能说因为我目前没有它在哪里)

登录到文件,而不是记录到控制台,然后用一个单独的gui应用程序跟踪文件。 这使控制台整洁,给你一个更持久的日志记录,这偶尔是非常有用的。 有各种各样的图书馆将为你做这些事情,或者你可以保持简单,只是自己做。

基本上,你必须用AllocConsoleAttachConsole自己创建一个控制台。 之后,您必须使用GetStdHandle获取标准句柄,并在GetStdHandle “将C运行时文件描述符与现有的操作系​​统文件句柄相关联”。

返回的句柄可以用来覆盖crt stdinstdout 之后,所有的crt方法,如printf应该工作。