GetLastError 在程序中的使用
来源:互联网 发布:微信众筹系统源码 编辑:程序博客网 时间:2024/05/23 11:47
在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()”。
可问题是,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()”。
0 0
- GetLastError 在程序中的使用
- 内存在程序中的使用
- static 在程序中的使用
- BCG在程序中的使用
- redis在程序中的使用
- GetLastError 使用介绍
- GetLastError的使用
- VC中使用GetLastError
- TRACE宏在程序调试中的使用
- unsafe在C#程序中的使用
- Qmake在非Qt程序中的使用
- TRACE宏在程序调试中的使用
- TRACE宏在程序调试中的使用
- GPU程序在GameByro中的使用
- 看门狗在多线程程序中的使用
- 【Log4j】Log4j在程序中的使用
- Qt ui在程序中的使用方式
- safedata在socket程序中的使用
- /mongod: /usr/lib64/libssl.so.10: no version information available (required by ./mongod)
- Excel自动生成身份证号
- Uva 11210 - Chinese Mahjong
- SPOJ QTREE5 lct
- TestFlight——完美的iOS App测试方案---pre.im
- GetLastError 在程序中的使用
- ShareUserId不一致导致数据丢失问题
- java web项目导入遇到的问题
- linux下redis的安装
- 关于 AnnotationConfigBeanDefinitionParser are only available on JDK 1.5 and higher
- Spark问题
- 【Android开发经验】Android开发相关的Blog推荐——跟随大神的脚步才能成长为大神
- PowerDesigner生成mysql字段comment 注释
- USB开发—自上而下(二)