C++學習之:根據GetLastError()返回值獲取錯誤信息

 注:本文屬於轉載,詳細出處忘記了,如果找到了會加上出處。

VC中GetLastError()獲取錯誤信息的使用在VC中編寫應用程序時,經常需要涉及到錯誤處理問題。許多函數調用只用TRUE和FALSE來表明函數的運行結果。一旦出現錯誤,MSDN中往往會指出請用GetLastError()函數來獲得錯誤原因。
     可問題是,GetLastError()返回的只是一個雙字節數值(DWORD)。OH,MY GOD!目前Win32的出錯編號已經從0排到11031,而這還不是錯誤編碼的全部。因爲錯誤代碼還在不斷增加。
     我想沒有人願意自己去查出錯編碼所對應的錯誤信息。好在Windows(Windows95以上, Window NT 3.1以上)已經提供了現成的錯誤信息處理函數:FormatMessage()。 以下是用FormatMessage()得到由GetLastError()返回的出錯編碼所對應錯誤信息的示例:
     LPVOID lpMsgBuf;
     FormatMessage(
     FORMAT_MESSAGE_ALLOCATE_BUFFER
    |FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,
     NULL,
     GetLastError(),
     MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
     (LPTSTR) &lpMsgBuf,
     0,
     NULL
     );
     // Process any inserts in lpMsgBuf.
     // ...
     // Display the string.
     MessageBox(NULL,(LPCTSTR)lpMsgBuf, _T("Error"), MB_OK | MB_ICONINFORMATION );
     // Free the buffer.
     LocalFree( lpMsgBuf );
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章