文档章节

Windows错误处理及错误消息文字显示

曾劲松
 曾劲松
发布于 2016/08/07 17:43
字数 203
阅读 16
收藏 0

主要用到两个函数 

  1. GetLastError(),返回DWORD是一个32位编号。
  2.  FormatMessage(),将错误代码显示为相应的文本描述。

 Windows函数失败时返回值

0或者NULL,因此可以用  if(!res){ ...} 处理错误

好用的错误通知函数,以以下形式报错:

void my_ShowError(DWORD dwErrNo, LPTSTR lpszFunction)
{ 
    // Retrieve the system error message for the last-error code
    LPVOID lpMsgBuf;
    LPVOID lpDisplayBuf;
    
    FormatMessage(
        FORMAT_MESSAGE_ALLOCATE_BUFFER | 
        FORMAT_MESSAGE_FROM_SYSTEM |
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        dwErrNo,//
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        (LPTSTR) &lpMsgBuf,
        0, NULL );

    // Display the error message and exit the process

    lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT, 
        (lstrlen((LPCTSTR)lpMsgBuf)+lstrlen((LPCTSTR)lpszFunction)+40)*sizeof(TCHAR)); 
    StringCchPrintf((LPTSTR)lpDisplayBuf, 
        LocalSize(lpDisplayBuf) / sizeof(TCHAR),
        TEXT("%s failed with error %d: %s"), 
        lpszFunction, dwErrNo, lpMsgBuf); 
    MessageBox(NULL, (LPCTSTR)lpDisplayBuf, TEXT("Error"), MB_OK); 

    LocalFree(lpMsgBuf);
    LocalFree(lpDisplayBuf);
//    ExitProcess(dwErrNo);
}
DWORD dwErrNo = GetLastError();
if ( NO_ERROR != dwErrNo ){
    ShowError( dwErrNo, "foobar" );
//    return dwErrNo;
}
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 
    ); 
MessageBox(  (LPCTSTR)lpMsgBuf); 
LocalFree( lpMsgBuf );

 

© 著作权归作者所有

共有 人打赏支持
曾劲松
粉丝 4
博文 198
码字总数 141022
作品 0
武汉
ABBYY FineReader怎么解决出现错误和警告提示的问题

识别结果的质量取决于多种因素,这些因素包括原始文档的质量、结构布局和文档导出参数等。在使用ABBYY FineReader Pro for Mac OCR文字识别软件处理文档的各个阶段,应用程序均可能会显示错误...

ABBYY
2016/12/15
22
0
社群系统ThinkSNS+第4阶段安卓端更新播报

研发发布版本号:V1.8 发布时间:2018年5月15日星期二 本次发布类型:移动端优化,新增功能发布 社交系统ThinkSNS+更新体验: https://www.pgyer.com/thinksns-plus-enterprise 社交系统Thi...

ThinkSNS账号
05/16
0
0
社交系统ThinkSNS+第4阶段IOS端研发更新发布播报

研发发布版本号:V1.8 发布时间:2018年5月15日星期二 本次发布类型:移动端优化,新增功能发布 社交系统ThinkSNS+更新体验: https://www.pgyer.com/thinksns-plus-enterprise 社交系统Thi...

ThinkSNS账号
05/21
0
0
社交系统ThinkSNS+ V1.8.3更新播报

     研发发布版本号:1.8.3   本次版本于2018年7月16日发布   本次发布类型:新增功能、细节调整与优化   社交系统ThinkSNSPlus更新体验:请于官网下载/安装最新版或联系QQ35159...

ThinkSNS账号
07/18
0
0
社交系统ThinkSNS+第4阶段H5端研发更新发布播报

社交系统ThinkSNS+第4阶段于5月15日更新发布,本次社交系统TS+发布类型:移动端优化,新增功能发布,以下为部分内容,详情如下: 一、优化、调整与修复 以下为本期已记录的部分内容 H5端更新...

ThinkSNS账号
05/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Mac OS X下Maven的安装与配置

Mac OS X 安装Maven: 下载 Maven, 并解压到某个目录。例如/Users/robbie/apache-maven-3.3.3 打开Terminal,输入以下命令,设置Maven classpath $ vi ~/.bash_profile 添加下列两行代码,之后...

TonyStarkSir
今天
3
0
关于编程,你的练习是不是有效的?

最近由于工作及Solution项目的影响,我在重新学习DDD和领域建模的一些知识。然后,我突然就想到了这个问题,以及我是怎么做的? 对于我来说,提升技能的项目会有四种: 纯兴趣驱动的项目。即...

问题终结者
今天
3
0
打开eclipse出现an error has occurred see the log file

解决方法: 1,打开eclipse安装目录下的eclipse.ini文件; 2,打开的文本文件最后添加一行 --add-modules=ALL-SYSTEM 3,保存重新打开Eclipse。...

任梁荣
昨天
4
0
搞定Northwind示例数据库,无论哪个版本的SQLServer都受用

Northwind数据库 从这里可以找到突破口: http://social.msdn.microsoft.com/Forums/zh-CN/Vsexpressvb/thread/8490a1c6-9018-40c9-aafb-df9f79d29cde 下面是MSDN: http://msdn2.microsoft......

QQZZFT
昨天
1
0
mysql主从同步,安装配置操作

准备 两台mysql服务,我这里准备了如下: 主库:192.168.176.128 从库:192.168.176.131 如何在Linux上安装mysql服务,请看https://blog.csdn.net/qq_18860653/article/details/80250499 操作...

小致dad
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部