本文介绍了如何获得由GetLastError函数()返回的错误code中的错误信息?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Windows API调用之后,我怎么能以文本形式获得最后的错误信息?

GetLastError函数()返回一个整数值,而不是短信。

感谢。


解决方案

  //返回最后Win32错误,字符串格式。如果没有错误,则返回一个空字符串。
标准::字符串GetLastErrorAsString()
{
    //获取错误信息,如果有的话。
    DWORD errorMessageID = :: GetLastError函数();
    如果(errorMessageID == 0)
        返回的std ::字符串(); //没有错误信息已被记录    LPSTR messageBuffer = nullptr;
    为size_t大小= FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
                                 空,errorMessageID,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPSTR)及messageBuffer,0,NULL);    性病::字符串消息(messageBuffer,大小);    //释放缓冲区。
    LocalFree(messageBuffer);    返回消息;
}

After a Windows API call, how can I get the last error message in a textual form?

GetLastError() returns an integer value, not a text message.

Thanks.

解决方案
//Returns the last Win32 error, in string format. Returns an empty string if there is no error.
std::string GetLastErrorAsString()
{
    //Get the error message, if any.
    DWORD errorMessageID = ::GetLastError();
    if(errorMessageID == 0)
        return std::string(); //No error message has been recorded

    LPSTR messageBuffer = nullptr;
    size_t size = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
                                 NULL, errorMessageID, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&messageBuffer, 0, NULL);

    std::string message(messageBuffer, size);

    //Free the buffer.
    LocalFree(messageBuffer);

    return message;
}

这篇关于如何获得由GetLastError函数()返回的错误code中的错误信息?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-25 09:19