注:本文属于转载,详细出处忘记了,若是找到了会加上出处。
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 );