还在不断的切换到 ERROR LOOKUP 程序查看 API 返回的系统错误代码吗? 那简直太低效啦!
不如让系统以当前默认编码为你生成错误信息字符串吧:
/////////////////////////////////////////////////////////////////////////////
//
// IN
// DWORD dwError 错误号,默认值(0xFFFFFFFF)表示直接获取本线程的最后错误号
//
// OUT
// CString 系统生成的错误信息串
//
static CString GetErrorMsg(DWORD dwError = 0xFFFFFFFF)
{
dwError = (dwError == 0xFFFFFFFF) ? GetLastError() : dwError;
// format message
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, // module to get message from (NULL == system)
dwError,
0, // Default language : MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT)
(LPTSTR) &lpMsgBuf,
0,
NULL
);
// Process any inserts in lpMsgBuf.
// ...
// get the string.
CString strMsg((LPCTSTR)lpMsgBuf);
// Free the buffer.
LocalFree( lpMsgBuf );
strMsg.TrimRight(_T("/r/n"));
return strMsg;
}
/////////////////////////////////////////////////////////////////////////////
//
// IN
// DWORD dwError 错误号,默认值(0xFFFFFFFF)表示直接获取本线程的最后错误号
//
// OUT
// CString 系统生成的错误信息串以及错误号的十进制值
//
static CString GetErrorMsgAndCode(DWORD dwError = 0xFFFFFFFF)
{
dwError = (dwError == 0xFFFFFFFF) ? GetLastError() : dwError;
CString strMsg;
strMsg.Format(_T("%s (%d)"), GetErrorMsg(dwError), dwError);
return strMsg;
}
本文介绍了一个用于快速生成系统错误信息的实用函数。该函数能够自动将API返回的错误代码转换为易于理解的错误信息字符串,提高了开发效率。通过使用这个函数,开发者不再需要频繁查阅错误代码,系统会直接提供详细的错误描述。
1254

被折叠的 条评论
为什么被折叠?



