VC++之GetLastError()使用说明
VC中GetLastError()获取错误信息的使用
在VC中编写应用程序时,经常需要涉及到错误处理问题。许多函数调用只用TRUE和FALSE来表明函数的运行结果。一旦出现错误,MSDN中往往会指出请用GetLastError()函数来获得错误原因。
可问题是,GetLastError()返回的只是一个双字节数值(DWORD)。OH,MY
GOD!目前Win32的出错编号已经从0排到11031,而这还不是错误编码的全部。因为错误代码还在不断增加。
我想没有人愿意自己去查出错编码所对应的错误信息。好在Windows(Windows95以上, Window NT
3.1以上)已经提供了现成的错误信息处理函数:FormatMessage()。
以下是用FormatMessage()得到由GetLastError()返回的出错编码所对应错误信息的示例:
#include <stdio.h>
#include <windows.h>
int WINAPI WinMain
(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
    LPVOID lpMsgBuf;
    FormatMessage(
        FORMAT_MESSAGE_ALLOCATE_BUFFER|
        FORMAT_MESSAGE_FROM_SYSTEM|
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        GetLastError(),
        MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
        (LPTSTR)&lpMsgBuf,
        0,
        NULL
        );
    //PROCESS ANY INSERTS IN lpMsgBuf.
    //DISPLAY THE STRING.
    MessageBox(NULL,(LPCTSTR)lpMsgBuf,"Error",MB_OK | MB_ICONINFORMATION);
    //FREE THE BUFF.
    LocalFree(lpMsgBuf);
    return 0;
}
〖0〗-操作成功完成。
〖1〗-功能错误。
〖2〗-系统找不到指定的文件。
〖3〗-系统找不到指定的路径。
〖4〗-系统无法打开文件。
〖5〗-拒绝访问。
〖6〗-句柄无效。
〖7〗-存储控制块被损坏。
〖8〗-存储空间不足,无法处理此命令。
〖9〗-存储控制块地址无效。
〖10〗-环境错误。
VC++之GetLastError()使用说明的更多相关文章
- VC中GetLastError()获取错误信息的使用,以及错误代码的含义
		
转载:http://www.seacha.com/article.php/knowledge/windows/mfc/2011/0423/335.html VC中GetLastError()获取错误信 ...
 - c++学习之:根据GetLastError()返回值获取错误信息
		
VC中GetLastError()获取错误信息的使用在VC中编写应用程序时,经常需要涉及到错误处理问题.许多函数调用只用TRUE和FALSE来表明函数的运行结果.一旦出现错误,MSDN中往往会指出请用 ...
 - 西门子Prodave5.5使用说明及VC示例
		
西门子PLC的通信协议主要是PPI.MPI.Profibus.CP243/CP343/CP443 网络协议,prodave是早期完成的程序接口,除了网络协议外其它的主要协议都支持,SoftNet是西门 ...
 - VC++ 在Watch窗口显示GetLastError值以及详细信息
		
You can display the value GetLastError() will return by putting "@err" in your watch windo ...
 - VC depends使用说明
		
Depends用来显示与一个可执行文件(exe或者dll)相关的依赖项(动态链接库dll),以及该exe或dll引用了这些dll中的哪些接口,同时也可以看到每个被依赖的dll中的所有导出的函数接口. ...
 - VC程序获取管理员权限
		
一: 编译程序的时候设置一下 在项目属性--连接器--清单文件--UAC执行级别改为requireAdministrator 二: void GainAdminPrivileges(CString s ...
 - iOS 10 UserNotifications 使用说明
		
本教程以贴代码为主.尽可能直观,少量说明. 注意:XCode8的需要手动开启主target Capabilities中的Push Notification. 关于创建多个target后真机测试的证书问 ...
 - FormatMessage与GetLastError配合使用,排查windows api调用过程中的错误
		
前一段时间在学习windows api调用过程中,遇到过一些调用错误或者程序没能显示预期的结果,或者直接出现vc运行时错误. 这对新手来说是司空见惯的事,因为不太熟悉难免会出错,出错的信息如果能显示很 ...
 - 孙鑫VC学习笔记:多线程编程
		
孙鑫VC学习笔记:多线程编程 SkySeraph Dec 11st 2010 HQU Email:zgzhaobo@gmail.com QQ:452728574 Latest Modified ...
 
随机推荐
- jsonp 调用天气API
			
由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socket通讯 ...
 - .NET软件汉化小实例
			
Author:KillerLegend Date:2014.6.18 From:http://www.cnblogs.com/killerlegend/p/3795577.html 好的,今天我们来汉 ...
 - BAT命令介绍【转自Internet】
			
一.简单批处理内部命令简介 1.Echo 命令 打开回显或关闭请求回显功能,或显示消息.如果没有任何参数,echo 命令将显示当前回显设置. 语法: echo [{on│off}] [message] ...
 - delphi 基础之二 面向对象概念初步
			
面向对象概念初步 •类自动生成 快捷键:ctrl+shift+c 1.类的定义 类是用户创建的数据类型,包括状态.表达式和一些操作.有3个组成部分,即字段.方法和属性.字段是类的内部数据变量,方法就是 ...
 - openstack的第二天
			
今天,在公司测试了还是网络有问题. 但是用了rdo还是成功了~明天就再试试怎么开放端口进来.
 - 社保系列7《PSAM卡》
			
PSAM卡用于商户POS.网点终端.直联终端等端末设备上,负责机具的安全控管.PSAM卡具有一定的通用性.经过个人化处理的PSAM卡能在不同的机具上使用. PSAM卡支持多级发卡的机制,各级发卡方在卡 ...
 - 微软CRM解决医药企业串货之痛
			
没有准确.及时的流向数据统计和分析,医药企业营销部门就无法有效管理串货泛滥问题,串货会造成渠道无利可赚,挫伤渠道的积极性,产品无人愿意卖,最终伤害的还是医药企业. 医药企业营销发展的不同阶段对串货的态 ...
 - randomize_va_space
			
proc/sys/kernel/randomize_va_space用于控制Linux下 内存地址随机化机制(address space layout randomization),有以下三种情况 0 ...
 - [转]论window和Linux之长短
			
论window和Linux之长短 王垠 http://www.kerneltravel.net/jiqiao/whyLinux.htm — 摈弃 Windows 低效率的工作方式,发掘 Linux 身 ...
 - Function-两个日期大小比较
			
function checkDate(from,to){ if (from == "" || to == "") return 2; var rValue = ...