C ++:写入打开表单的控制台

时间:2011-04-05 00:26:48

标签: c++ winforms console

我有一个打开窗户的控制台。如何使用从表单上的控件获取的值来写入此控制台?例如文本字段?

2 个答案:

答案 0 :(得分:1)

要在Windows下访问控制台,您必须将程序链接为控制台应用程序。在Visual C ++中,您可以在Configuration Properties / Linker / System / Subsystem = Console下的Project Settings中配置它。

将您的应用程序链接为concole-application not 意味着您无法打开一个窗口。它只是意味着a)你的过程总是有一个控制台窗口和b)例如cmd.exe将同步执行它(=等待它完成后再继续脚本/再次显示提示)。

然后您可以通常的方式访问控制台:使用std::coutprintf等。

如果应用程序作为窗口应用程序链接,则AFAIK没有(好的和简单的)方式来启动应用程序启动的控制台。 (IIRC你可以分配一个新的控制台,但我认为这不是你想要的)。

编辑:如果要将某些消息打印到控制台,即使输出已被重定向,我建议您使用std::cerr打印到“错误输出”。 “错误输出”也默认为控制台,但它与“stdout”不同,并且通常不会重定向。 可以重定向,但我认为向用户提供该选项是一件好事,而不是通过直接打印到控制台来解决任何重定向问题。

EDIT2:当我需要一个“双模式”应用程序,即可以使用GUI或命令提示符运行的应用程序时,我使用控制台应用程序,并调用FreeConsole()来获取如果通过命令行参数选择GUI版本(例如,不传递任何参数),则删除控制台窗口。如果应用程序以GUI模式启动(例如通过双击资源管理器),那么控制台的这种方式仍会短暂弹出,但它会立即关闭,因此在使用GUI时不会使屏幕混乱。

答案 1 :(得分:0)

默认情况下,Windows控制台应用程序已将stdout连接到控制台。如果不是(例如,i / o被shell重定向),您可以打开特殊文件名"CONOUT$"