繁体   English   中英

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

[英]C++ : Writing to a console which opened a form

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

要在Windows下访问控制台,您必须将程序链接为控制台应用程序。 在Visual C ++中,可以在“项目设置”中的“配置属性/链接器/系统/子系统=控制台”下进行配置。

将您的应用程序作为检测控制台应用程序并不意味着你不能打开一个窗口。 这仅意味着a)您的进程将始终具有控制台窗口,并且b)例如cmd.exe将同步执行它(=等待其完成,然后继续执行脚本/再次显示提示)。

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

AFAIK如果将应用程序链接为窗口应用程序,则没有(简便)方法来访问启动该应用程序的控制台。 (但是,IIRC您可以分配一个新的控制台,但是我认为这不是您想要的)。

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

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

Windows控制台应用程序默认情况下将stdout连接到控制台。 如果不是(例如,通过外壳重定向了I / O),则可以打开特殊文件名"CONOUT$"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM