文档章节

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

曾劲松
 曾劲松
发布于 2016/08/07 17:43
字数 203
阅读 19
收藏 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
博文 200
码字总数 141434
作品 0
武汉
私信 提问
社群系统ThinkSNS+第4阶段安卓端更新播报

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

ThinkSNS账号
05/16
0
0
ABBYY FineReader怎么解决出现错误和警告提示的问题

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

ABBYY
2016/12/15
22
0
社交系统ThinkSNS+ V1.8.3更新播报

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

ThinkSNS账号
07/18
0
0
怎么处理abbyy中的错误代码257

ABBYY PDF Transformer+OCR文字识别软件,是一款可创建、编辑、添加注释以及将PDF文件转换为其他可编辑格式的通用工具,使用该软件时,不少用户发现启动ABBYY PDF Transformer+时,显示程序内...

ABBYY
2016/09/12
16
0
社交系统ThinkSNS+第4阶段IOS端研发更新发布播报

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

ThinkSNS账号
05/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

微服务分布式事务实现

https://www.processon.com/view/link/5b2144d7e4b001a14d3d2d30

WALK_MAN
今天
2
0
《大漠烟尘》读书笔记及读后感文章3700字

《大漠烟尘》读书笔记及读后感文章3700字: 在这个浮躁的社会里,你有多久没有好好读完一本书了? 我们总觉得自己和别人不一样,所以当看到别人身上的问题时,很少有“反求诸己”,反思自己。...

原创小博客
今天
4
0
大数据教程(9.5)用MR实现sql中的jion逻辑

上一篇博客讲解了使用jar -jar的方式来运行提交MR程序,以及通过修改YarnRunner的源码来实现MR的windows开发环境提交到集群的方式。本篇博主将分享sql中常见的join操作。 一、需求 订单数据表...

em_aaron
今天
3
0
十万个为什么之什么是resultful规范

起源 越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点...

尾生
今天
3
0
Terraform配置文件(Terraform configuration)

Terraform配置文件 翻译自Terraform Configuration Terraform用文本文件来描述设备、设置变量。这些文件被称为Terraform配置文件,以.tf结尾。这一部分将讲述Terraform配置文件的加载与格式。...

buddie
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部