From 221ce60760d1a77319a4c73eb075b9fb012af3e1 Mon Sep 17 00:00:00 2001 From: luisangelsm Date: Thu, 12 Mar 2026 18:18:13 +0100 Subject: [PATCH] Better console output in Windows This way QtCreator can actually get the output from the app. --- third_party/QsLog/QsLogDestConsole.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/third_party/QsLog/QsLogDestConsole.cpp b/third_party/QsLog/QsLogDestConsole.cpp index d7d21646..1e6fa1ec 100644 --- a/third_party/QsLog/QsLogDestConsole.cpp +++ b/third_party/QsLog/QsLogDestConsole.cpp @@ -39,11 +39,17 @@ void QsDebugOutput::output( const QString& message ) #include void QsDebugOutput::output( const QString& message ) { - WriteConsoleW(GetStdHandle(STD_ERROR_HANDLE), message.utf16(), message.size(), NULL, NULL); - WriteConsoleW(GetStdHandle(STD_ERROR_HANDLE), L"\n", 1, NULL, NULL); - - fprintf(stdout, "%s\n", qPrintable(message)); - fflush(stdout); + HANDLE stdErr = GetStdHandle(STD_ERROR_HANDLE); + DWORD mode; + if (GetConsoleMode(stdErr, &mode)) { + // Real console attached — use Unicode-aware WriteConsoleW + WriteConsoleW(stdErr, message.utf16(), message.size(), NULL, NULL); + WriteConsoleW(stdErr, L"\n", 1, NULL, NULL); + } else { + // Pipe (Qt Creator, redirect, etc.) — use stdio + fprintf(stdout, "%s\n", qPrintable(message)); + fflush(stdout); + } } #endif