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 错误查找实用程序显示 0xC1:“%1 不是有效的 Win32 应用程序。”。因此,当错误消息包含占位符时,我的函数不起作用。 有没有通用的方法可以在不知道错误代码的情况下获得与错误查找相同的结果?
最佳答案
尝试将 FORMAT_MESSAGE_IGNORE_INSERTS
添加到标志中。
关于c++ - 带占位符的 FormatMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6190105/