http://msdn.microsoft.com/en-us/library/ms679360(VS.85).aspx
在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.
//显示错误信息
MessageBox( (LPCTSTR)lpMsgBuf);
// Free the buffer.
LocalFree( lpMsgBuf );
windowsAPI函数所以头文件--#include<windows.h>
FormatMessage()功能就是将GetLastError得到的错误信息(这个错误信息是数字代号)转化成字符串信息的函数
函数FormatMessage声明如下:
WINBASEAPI
DWORD WINAPI FormatMessageA(
DWORD dwFlags, //错误信息类型标志
LPCVOID lpSource, //指定本地信息定义 其依赖于第一个参数的设置
DWORD dwMessageId, //指定被请求的消息标示,如果dwFlags设置
//为 FORMAT_MESSAGE_FROM_STRING 这个参数将被忽略
DWORD dwLanguageId, //指定被请求的消息的语言标示
LPSTR lpBuffer, //用来保存格式话后的消息字符串的地址
DWORD nSize, //如果第一个参数为指定FORMAT_MESSAGE_ALLOCATE_BUFFER
// 这个参数就是字符串的最大长度
va_list * Arguments
);