Предыстория: мы разрабатываем приложения для win32 и используем «Thompson Toolkit» в Windows, чтобы получить unix-подобную оболочку, которую мы используем в качестве нашей командной строки.
У нас есть программа с графическим интерфейсом (с WinMain и циклом сообщений), которую мы хотим записать в консоль, но printf и так далее не работают, даже когда мы запускаем программу с консоли. Как мы можем писать в консоль из программы с графическим интерфейсом? Нам нужно напечатать там текст, чтобы автоматизированная система сборки могла отображать сообщения об ошибках и так далее.
Спасибо.





Короче нужно приставить консоль. Для получения подробной информации и готового к использованию кода см. http://www.codeproject.com/KB/dialog/ConsoleAdapter.aspx.
где-то в настройках проекта Visual Studio вы можете включить консоль, если вы используете VS. (Не могу сказать где, потому что в настоящее время у меня его нет)
Вместо входа в консоль войдите в файл, а затем отслеживайте его с помощью отдельного приложения с графическим интерфейсом пользователя. Это сохраняет консоль незагроможденной и дает вам более постоянную запись вашего журнала, что иногда бывает чрезвычайно полезно. Существуют различные библиотеки, которые сделают большую часть этого за вас, или вы можете сделать это просто и сделать это самостоятельно.
Таким образом вы не можете передать вывод другим программам. Кроме того, если пользователь хотел войти в файл, он передавал его в файл. Запись в файл не является гибкой.
В основном вам нужно создать консоль самостоятельно с AllocConsole, AttachConsole. После этого вы должны получить стандартные дескрипторы с GetStdHandle и «связать дескриптор файла времени выполнения C с существующим дескриптором файла операционной системы» с помощью _open_osfhandle.
Возвращенный дескриптор может использоваться для перезаписи CRT stdin и stdout. После этого все методы crt, такие как printf, должны работать.
Похоже, это дубликат другого недавнего вопроса: http://stackoverflow.com/questions/191842/how-do-i-get-conso le-output-in-c-with- a-windows-программа