可是有錯誤代碼還不夠,若需要知道真正錯誤原因,就得要去微軟官網去找出GetLastError回傳錯誤碼對應的文字敘述。
如果沒有網路的話要找出錯誤碼所表示的錯誤原因就很麻煩,這裡提供直接用Windows API來直接取得錯誤訊息的文字敘述,以協助我們進行程式偵錯。
void GetErrorMessage(DWORD dwErrorMessageCode)
{
CString strMsg;
LPVOID lpMsgBuf;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dwErrorMessageCode,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // 預設語言
(LPTSTR) &lpMsgBuf,
0,
NULL);
strMsg.Format(_T("Error Message : %s\nError Code : 0x%X\n"), lpMsgBuf, dwErrorMessageCode);
printf(strMsg);
LocalFree(lpMsgBuf); // 記得free掉空間,養成好習慣
}
DWORD dwErrorMessageCode傳入GetLastError()的數值即可
沒有留言:
張貼留言