Графический интерфейс Windows + вывод в консоль , Linux-style

У меня есть приложение с графическим интерфейсом пользователя, которое я разрабатываю кроссплатформенным для Linux и Windows. В Linux все работает плавно. Однако я столкнулся с заминкой в ​​Windows. Я хотел бы иметь возможность записывать определенные сообщения на консоль с помощью приложения с графическим интерфейсом в Windows в стиле Linux.

Под Linux-стилем я подразумеваю то, что если программа открывается из консоли, вывод будет идти в консоли, но если программа открыта, например, через меню «Пуск», пользователь никогда не увидит вывод консоли. По-видимому, это сложнее, чем кажется в Windows.

В настоящее время я использую следующую уловку в main ():

#if _WINDOWS /* Fix console output on Windows */
if (AttachConsole(ATTACH_PARENT_PROCESS)) {
    freopen("CONOUT$","wb",stdout);
    freopen("CONOUT$","wb",stderr);
}
#endif

Это позволяет мне создавать выходные данные до того, как окно действительно откроется программой, например, отвечая на " --help "из командной строки. Однако, как только окно действительно инициализируется и открывается моей программой, консоль возвращается. Мне нужно решение, которое обеспечит мне постоянный доступ к консоли на протяжении всего жизненного цикла моей программы, не открывая новую консоль, если она изначально не использовалась.

16
задан TachyonImpact 13 July 2011 в 01:00
поделиться