// 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 | |
}} |