2007年1月3日 星期三

How to display the System Message by error code From GetlastError() in MFC

今天討論的主題是, 如何在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.

沒有留言: