也經常利用 ::GetLastError(); 這支 Windows API 來獲取錯誤代碼,
但是這支API回報的是 DWORD 型態,想知道得更詳細往往要再上網搜尋一番,
當然也有方法可以取得文字訊息,簡單的範例如下。
int main()
{
CString strMsg;
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(), // 這裡也可以改成你想看的代碼值,例如直接打 8L 可得 "空間不足"
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL);
strMsg.Format(_T("錯誤訊息:%s\n錯誤代碼:0x%x"), lpMsgBuf, GetLastError());
LocalFree(lpMsgBuf); // 記得 free 掉空間
return TRUE;
}
例如 GetLastError 得到的是 13846L
利用 MessageBox 把 strMsg 秀出來的值就會是
---------------------------
Error Msg
---------------------------
錯誤訊息:收到無效的 cookie。
錯誤代碼:0x3616
---------------------------
確定
---------------------------
沒有留言:
張貼留言