/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/Engine/Foundation/Platform/Win/FormatString_Win.cpp
34 строки
1 KB
Sanakan8472
Resource View Refactor (#1589)
27 июн 2025, 09:33
Не верифицирован
27 июн 2025, 09:33
ae74d7e
Код
Авторство
О чём код?
#include <Foundation/FoundationPCH.h> #if EZ_ENABLED(EZ_PLATFORM_WINDOWS) # include <Foundation/Platform/Win/Utils/IncludeWindows.h> # include <Foundation/Strings/StringConversion.h> ezStringView BuildString(char* szTmp, ezUInt32 uiLength, const ezArgErrorCode& arg) { LPVOID lpMsgBuf = nullptr; if (FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, nullptr, arg.m_ErrorCode, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), (LPWSTR)&lpMsgBuf, 0, nullptr) == 0) { DWORD err = GetLastError(); ezStringUtils::snprintf(szTmp, uiLength, "%u (FormatMessageW failed with error code %u)", arg.m_ErrorCode, err); return ezStringView(szTmp); } LPWSTR pCRLF = wcschr((LPWSTR)lpMsgBuf, L'\r'); if (pCRLF != nullptr) { // remove the \r\n that FormatMessageW always appends *pCRLF = L'\0'; } // we need a bigger boat static thread_local char FullMessage[256]; ezStringUtils::snprintf(FullMessage, EZ_ARRAY_SIZE(FullMessage), "%u (\"%s\")", arg.m_ErrorCode, ezStringUtf8((LPWSTR)lpMsgBuf).GetData()); LocalFree(lpMsgBuf); return ezStringView(FullMessage); } #endif