您的位置:首页 > 其它

如何知道GetLastError()返回的错误信息

2010-07-05 17:17 441 查看
如何知道GetLastError()返回的错误信息
www.firnow.com 时间 : 2010-06-30 作者:网络 编辑:Mr.阿布 点击: 1 [ 评论 ]
-
-
综合 资源 电子书 社区 如何知道GetLastError()返回的错误信息
你可以在winerror.h中找到错误码的符号定义,从中可以知道错误的大体含义。也可以使用FormatMessage得到该错误对应的字符串。
在VC中编写应用程序时,经常需要涉及到错误处理问题。许多函数调用只用TRUE和FALSE来表明函数的运行结果。一旦出现错误,MSDN中往往会指出请用GetLastError()函数来获得错误原因。
可问题是,GetLastError()返回的只是一个双字节数值(DWORD)。OH,MY GOD!目前Win32的出错编号已经从0排到11031,而这还不是错误编码的全部。因为错误代码还在不断增加。

我想没有人愿意自己去查出错编码所对应的错误信息。好在Windows(Windows95以上, Window NT 3.1以上)已经提供了现成的错误信息处理函数:FormatMessage()。 以下是用FormatMessage()得到由GetLastError()返回的出错编码所对应错误信息的示例:
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language

(LPTSTR) &lpMsgBuf,
0,
NULL
);

// Process any inserts in lpMsgBuf.
// ...

// Display the string.
MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );

// Free the buffer.
LocalFree( lpMsgBuf );
不过有一点比较可笑,“该函数调用如果出错,将返回0值,需要获取错误信息,请调用GetLastError()”。
文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/3_program/vc/vcxl/20100630/265391.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: