使用GetLastError()得到上一个函数设置的32位错误代码。
要自己定义错误代码使用SetLastError()函数,得到错误代码后最简单的方法使用Error LookUp软件看看代码的具体含义,当然,也可以使用FormatMessage函数转化成字符串描述。然而,FormatMessage函数并不能完全看懂,先放着吧。
看看后面的,在回顾一下前面的。
来看看FormatMessage这个函数。
FormatMessageA(DWORD dwFlags,//标识位,FORMAT_MESSAGE_ALLOCATE_BUFFER时分配足够容纳错误文本描述的内存。FORMAT_MESSAGE_FROM_SYSTEM希望获得系统定义代码
LPCVOID lpSource,//第一个参数为FORMAT_MESSAGE_FROM_HMODULE时,lpSource会去搜索模块进程...很好,看不懂对吧,先填上NULL吧
DWORD dwMessageId,//通俗一点讲就是错误代码
DWORD dwLanguageId,//语言标识符,使用MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT)表示操作系统默认语言
LPSTR lpBuffer,//错误描述
DWORD nSize,//错误描述缓冲区大小
va_list *Arguments//保存格式化信息中的插入值的一个数组。依然不懂,填个NULL吧
);
书上的例子太复杂了,要不要一来就这样?来个简单的
#include <stdio.h>
#include <windows.h>
int main()
{
if (!CreateDirectory("C:\\", 0))
{
LPVOID pMsgBuf;
//dw为错误代码
DWORD dw = GetLastError();
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&pMsgBuf, 0, NULL);
printf("出错码:%d, 出错信息:%s \n", dw, pMsgBuf);
}
return 0;
}
函数么,就应该简单的入门,书上写的可是会打击积极性的哦~
如果书后面有这函数的继续使用且参数不为NULL的话,回头把这几个不懂的参数补上。