すぐ忘れるのでメモ.GetLastError() でエラー ID を取得して,FormatMessage() でそれに対応するメッセージを取得する関数
#include <string> #include <windows.h> #include <tchar.h> /* ------------------------------------------------------------------------- */ /* * GetErrorMessage * * 指定されたエラー ID に対応するメッセージを取得する. * http://msdn.microsoft.com/ja-jp/library/cc428939.aspx */ /* ------------------------------------------------------------------------- */ std::basic_string<TCHAR> GetErrorMessage(DWORD id) { std::basic_string<TCHAR> dest; LPVOID buffer = NULL; DWORD result = FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, id, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), reinterpret_cast<TCHAR*>(&buffer), 0, NULL ); if (result > 0 && buffer != NULL) { dest = reinterpret_cast<TCHAR*>(buffer); LocalFree(buffer); // 末尾の改行を除去 if (!dest.empty() && dest[dest.size() - 1] == _T('\n')) dest.erase(dest.size() - 1); if (!dest.empty() && dest[dest.size() - 1] == _T('\r')) dest.erase(dest.size() - 1); } return dest; } /* ------------------------------------------------------------------------- */ /* * GetLastErrorMessage * * GetLastError() に対応するメッセージを取得する. */ /* ------------------------------------------------------------------------- */ std::basic_string<TCHAR> GetLastErrorMessage() { return GetErrorMessage(GetLastError()); }