У меня есть приложение GUI, которое я разрабатываю кросс-платформу для 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" из командной строки. Однако, как только окно фактически инициализируется и открывается моей программой, консоль возвращается. Мне нужно решение, которое позволит мне продолжать доступ к консоли на протяжении всей моей программы, не открывая новую консоль, если она не была первоначально использована.