本节讲解的函数:GetLastError
为了演示删除文件失败,先把 123.png 的属性设置为只读(直接调用DeleteFile 删除只读属性文件会返回错误码)
代码:
#include<windows.h>
#include<tchar.h>
#pragma comment(lib, "Urlmon.lib")
int WINAPI _tWinMain(HINSTANCE hinstance, HINSTANCE hPreInstance, LPTSTR lpCmdLine, int nShowCmd) {
bool res = DeleteFile(_T("D:\\123.png"));
if (res)
{
MessageBox(NULL, _T("删除成功"), _T("tip"), MB_OK);
}
else
{
DWORD dwError = GetLastError();
MessageBox(NULL, _T("删除失败"), _T("tip"), MB_OK);
}
return 0;
}
debug 程序查看错误码
查看错误码对应的错误原因描述
点击: 工具 -> 错误查找 -> 输入错误码 -> 点击查找
错误原因是:拒绝访问
演示另一种删除文件返回错误码的情况:
这里我们先把 123.png 这个文件删掉,然后运行 删除 123.png 的程序
debug 程序看到错误码为2
查看错误码对应的原因描述
增加基于错误码进行的程序运行时的反馈
DWORD dwError = GetLastError();
if (dwError == 2)
{
MessageBox(NULL, _T("你要删除的文件不存在,请确认你要删除的文件名称!"), _T("tip"), MB_OK);
}
else
{
MessageBox(NULL, _T("删除失败"), _T("tip"), MB_OK);
}
实际上错误码都有系统宏定义
比如错误码2对应的系统宏定义为 ERROR_FILE_NOT_FOUND
因此判断语句可以这么写
if (dwError == ERROR_FILE_NOT_FOUND)
百度 “system error 0-499” 可以找到所有的 system error 错误码对应的宏定义