CString ErrorMessageFromErrorCode(DWORD错误代码)
{
    void * pMsgBuf = NULL;

    :: FormatMessage(
        FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
        空值,
        错误代码,
        MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
        (LPTSTR)&pMsgBuf,
        0,
        空值);

    CString结果;

    如果(pMsgBuf)
    {
        结果=(LPTSTR)pMsgBuf;
        LocalFree(pMsgBuf);
    }

    如果(result.Length()== 0)
        结果= _T(“未知错误”);


    返回结果;
}


当使用参数2调用时,此函数返回“系统找不到指定的文件”。用0xC1调用时,它返回“未知错误”。 Microsoft错误查找实用工具针对0xC1显示了此错误:“%1不是有效的Win32应用程序。”因此,当错误消息包含占位符时,我的功能不起作用。
有没有一种通用方法可以得到与错误查找相同的结果,而又不了解错误代码?

最佳答案

尝试将FORMAT_MESSAGE_IGNORE_INSERTS添加到标志中。

10-04 13:36