背景:我们开发win32应用程序,并在windows上使用“Thompson Toolkit”来给我们一个类似unix的shell,我们用它作为命令行。
我们有一个我们想要写入控制台的GUI程序(带有WinMain和消息循环),但是即使从控制台启动程序,printf等也不起作用。 我们怎样才能从GUI程序写入控制台? 我们需要在那里打印文本,这样一个自动化的构build系统可以显示错误消息等等。
谢谢。
总之,你需要连接一个控制台。 有关详细信息和准备使用的代码,请参阅http://www.codeproject.com/KB/dialog/ConsoleAdapter.aspx 。
在Visual Studio项目设置的某处,你可以打开一个控制台,假设你正在使用VS. (不能说因为我目前没有它在哪里)
登录到文件,而不是记录到控制台,然后用一个单独的gui应用程序跟踪文件。 这使控制台整洁,给你一个更持久的日志记录,这偶尔是非常有用的。 有各种各样的图书馆将为你做这些事情,或者你可以保持简单,只是自己做。
基本上,你必须用AllocConsole
, AttachConsole
自己创建一个控制台。 之后,您必须使用GetStdHandle
获取标准句柄,并在GetStdHandle
“将C运行时文件描述符与现有的操作系统文件句柄相关联”。
返回的句柄可以用来覆盖crt stdin
和stdout
。 之后,所有的crt方法,如printf
应该工作。