使用占位符格式化消息

FormatMessage with placeholders

本文关键字:消息 格式化 占位符      更新时间:2023-10-16
CString ErrorMessageFromErrorCode(DWORD错误代码){void*pMsgBuf=NULL;::格式化消息(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,NULL,errorCode,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPTSTR)&pMsgBuf,0,NULL);C字符串结果;if(pMsgBuf){结果=(LPTSTR)pMsgBuf;LocalFree(pMsgBuf);}if(result.Length()==0)result=_T("未知错误");返回结果;}

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

尝试将FORMAT_MESSAGE_IGNORE_INSERTS添加到标志中。