diff --git a/format.cc b/format.cc index 9005302c..1e874cac 100644 --- a/format.cc +++ b/format.cc @@ -40,6 +40,7 @@ # include # endif # include +# include // for _get_osfhandle #endif using fmt::internal::Arg; @@ -1112,9 +1113,7 @@ FMT_FUNC void fmt::print(std::ostream &os, StringRef format_str, ArgList args) { FMT_FUNC void fmt::print_colored(Color c, StringRef format, ArgList args) { #ifdef _WIN32 - HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); - if (handle == INVALID_HANDLE_VALUE) - FMT_THROW(WindowsError(GetLastError(), "cannot get output handle")); + HANDLE handle = reinterpret_cast(_get_osfhandle(_fileno(stdout))); CONSOLE_SCREEN_BUFFER_INFO info_con; if (!GetConsoleScreenBufferInfo(handle, &info_con)) FMT_THROW(WindowsError(GetLastError(), "cannot get console information"));