背景:我们开发win32应用程序,并在windows上使用“Thompson Toolkit”为我们提供了一个类似unix的shell,我们将其用作我们的命令行。
我们有一个要写入控制台的 GUI 程序(带有 WinMain 和消息循环),但是 printf 等不起作用,即使我们从控制台启动程序也是如此。我们如何从 GUI 程序写入控制台?我们需要在那里打印文本,以便自动构建系统可以显示错误消息等。
谢谢。
背景:我们开发win32应用程序,并在windows上使用“Thompson Toolkit”为我们提供了一个类似unix的shell,我们将其用作我们的命令行。
我们有一个要写入控制台的 GUI 程序(带有 WinMain 和消息循环),但是 printf 等不起作用,即使我们从控制台启动程序也是如此。我们如何从 GUI 程序写入控制台?我们需要在那里打印文本,以便自动构建系统可以显示错误消息等。
谢谢。
简而言之,您需要附加一个控制台。有关详细信息和准备使用的代码,请参阅http://www.codeproject.com/KB/dialog/ConsoleAdapter.aspx。
基本上你必须自己用AllocConsole
,来创建一个控制台AttachConsole
。之后,您必须GetStdHandle
在_open_osfhandle
.
返回的句柄可用于覆盖 crtstdin
和stdout
. 之后,所有 crt 方法都printf
应该工作。
不要登录到控制台,而是登录到文件,然后使用单独的 gui 应用程序跟踪文件。这使控制台保持整洁,并为您提供更持久的日志记录,这有时非常有用。有各种库可以为您完成大部分工作,或者您可以保持简单并自己做。
假设您使用的是 VS,则可以在 Visual Studio 项目设置中的某处打开控制台。(不能说在哪里,因为我目前没有)