【问题标题】:How to write to the console in a GUI application如何在 GUI 应用程序中写入控制台
【发布时间】:2008-10-10 17:15:32
【问题描述】:

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

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

谢谢。

【问题讨论】:

标签: windows winapi console-application


【解决方案1】:

简而言之,您需要附加一个控制台。有关详细信息和准备使用的代码,请参阅http://www.codeproject.com/KB/dialog/ConsoleAdapter.aspx

【讨论】:

    【解决方案2】:

    不是登录到控制台,而是登录到文件,然后使用单独的 gui 应用程序跟踪文件。这使控制台保持整洁,并为您提供更持久的日志记录,这有时非常有用。有各种库可以为您完成大部分工作,或者您可以保持简单,自己做。

    【讨论】:

    • 您不能以这种方式将输出通过管道传输到其他程序。另外,如果用户想要登录到文件,他会将其通过管道传输到文件中。记录到文件不灵活。
    【解决方案3】:

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

    返回的句柄可用于覆盖crt stdinstdout。之后,像printf 这样的所有crt 方法都应该可以工作。

    【讨论】:

      【解决方案4】:

      假设您使用的是 VS,您可以在 Visual Studio 项目设置中的某处启用控制台。 (不能说在哪里,因为我目前没有)

      【讨论】:

        猜你喜欢
        • 2019-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-09
        • 1970-01-01
        相关资源
        最近更新 更多