C ++: запись в консоль, которая открыла форму - PullRequest
0 голосов
/ 05 апреля 2011

У меня есть консоль, которая открывает окно. Как мне написать в эту консоль, используя значения, которые я получаю из элементов управления в форме? Например, такие как текстовые поля?

Ответы [ 2 ]

1 голос
/ 05 апреля 2011

Чтобы получить доступ к консоли под Windows, вы должны связать вашу программу как консольное приложение.В Visual C ++ это можно настроить в настройках проекта в разделе «Свойства конфигурации» / «Компоновщик» / «Система» / «Подсистема» = «Консоль».

При связывании приложения в качестве приложения-консолида не означает, что вы не можетеоткрой окно.Это просто означает: а) что у вашего процесса всегда будет окно консоли и б) что, например, cmd.exe выполнит его синхронно (= дождитесь его завершения, прежде чем продолжить выполнение сценария / снова отобразить приглашение).

Затем вы можете получить доступ к консоли обычным способом: используя std::cout, printf и т. Д.

AFAIK, нет (хорошего и простого) способа получить доступ к консоли, с которой было запущено приложение, если приложениебыл связан как оконное приложение.(IIRC, однако, вы можете выделить новую консоль, но я думаю, что это не то, что вам нужно).

РЕДАКТИРОВАТЬ: Если вы хотите распечатать некоторые сообщения на консоли, даже если вывод былперенаправленный, я предлагаю вам использовать std::cerr для печати на «вывод ошибок».«Вывод ошибки» также по умолчанию используется для консоли, но это поток, отличный от «stdout», и обычно он не перенаправляется.Он может быть перенаправлен, но я думаю, что это хорошая возможность дать пользователям такую ​​возможность, а не обходить никакие перенаправления путем печати непосредственно на консоль.

EDIT2: Когда мне нужно приложение «двойной режим», то есть приложение, которое может работать с графическим интерфейсом или в командной строке, я использую консольное приложение и вызываю FreeConsole (), чтобы избавиться от окна консоли, если выбрана версия графического интерфейса.через аргументы командной строки (например, не передавая никаких аргументов).Этот путь к консоли все равно будет отображаться на короткое время, если приложение запущено в режиме графического интерфейса пользователя (например, двойным щелчком в проводнике), но оно сразу же закрывается, чтобы не загромождать экран во время использования графического интерфейса.

0 голосов
/ 05 апреля 2011

Консольное приложение Windows по умолчанию имеет stdout, подключенное к консоли.Если нет (например, ввод / вывод был перенаправлен оболочкой), вы можете открыть специальное имя файла "CONOUT$".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...