// Windows/Error.h #include "StdAfx.h" #include "Windows/Error.h" #ifndef _UNICODE #include "Common/StringConvert.h" #endif #ifndef _UNICODE extern bool g_IsNT; #endif namespace NWindows { namespace NError { bool MyFormatMessage(DWORD messageID, CSysString &message) { LPVOID msgBuf; if (::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL,messageID, 0, (LPTSTR) &msgBuf,0, NULL) == 0) return false; message = (LPCTSTR)msgBuf; ::LocalFree(msgBuf); return true; } #ifndef _UNICODE bool MyFormatMessage(DWORD messageID, UString &message) { if (g_IsNT) { LPVOID msgBuf; if (::FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, messageID, 0, (LPWSTR) &msgBuf, 0, NULL) == 0) return false; message = (LPCWSTR)msgBuf; ::LocalFree(msgBuf); return true; } CSysString messageSys; bool result = MyFormatMessage(messageID, messageSys); message = GetUnicodeString(messageSys); return result; } #endif }}