1. 程式人生 > >c++學習之:根據GetLastError()返回值獲取錯誤資訊

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 );