CString ErrorMessageFromErrorCode(DWORD errorCode) { void* pMsgBuf = NULL; ::FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, errorCode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &pMsgBuf, 0, NULL); CString result; if ( pMsgBuf ) { result = (LPTSTR) pMsgBuf; LocalFree(pMsgBuf); } if ( result.Length() == 0 ) result = _T("Unknown error"); return result; }
使用参数2调用时,此函数返回“系统找不到指定的文件。”。当使用0xC1调用时,它返回“未知错误”。 Microsoft Error Lookup实用程序显示0xC1:“%1不是有效的Win32应用程序。”。因此,当错误消息包含占位符时,我的功能不起作用。 是否有通用的方法来获得与错误查找相同的结果,而不知道有关错误代码的任何信息?
答案 0 :(得分:3)
尝试将FORMAT_MESSAGE_IGNORE_INSERTS
添加到标记中。