今天討論的主題是, 如何在MFC的程式裡, 顯示 System Error code 的真正含意.
通常我們會使用 GetlastError(), 來取得系統錯誤碼, 但取回的錯誤碼, 又該如何顯示其中的含意呢?
在此我們引用了一個 FormatMessage() 的MFC函式.
以下是範例:
std::string FormattingMessage(DWORD error_code)
{
LPVOID lpMsgBuf;
std::string ret_string;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER
FORMAT_MESSAGE_FROM_SYSTEM
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
error_code,
0x0409, // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL);
// Display the string.
ret_string = "[WINDOWS SYSTEM WARNING] - ";
ret_string += (LPCTSTR)lpMsgBuf;
// Free the buffer.
LocalFree( lpMsgBuf );
return ret_string;
}
其中 Default language的部分, 填入 NULL 則會根據你的語系來決定,
如此若ErrorCode = 32; 則會顯示
[WINDOWS SYSTEM WARNING] - The process cannot access the file because it is being used by another process.
沒有留言:
張貼留言