MFC 中错误处理信息FormatMessage

利用CString::FormatMessage格式化资源ID 利用CString::FormatMessage格式化资源ID欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowcha... 阅读详情
 
BOOL CMyClass::ReadFile(const CString & filename)
   {
    CFile f;
    if(!f.Open(filename, CFile::modeRead))
      { /* Failed */
       DWORD err = ::GetLastError();                 // [1]
       CString fmt;                                  // [2]
       fmt.LoadString(IDS_FILE_OPEN_ERROR);          // [3]
       // File open error\n
       // %s\n
       // %s
       CString msg;                                  // [4]
       msg.Format(fmt, filename, ErrorString(err));  // [5]
       AfxMessageBox(msg, MB_ICONERROR | MB_OK);
       return FALSE;
      } /* Failed */
    ... read file here
    f.Close();
    return TRUE;
   } // CMyClass::ReadFile

 

ErrorString.h:

CString ErrorString(DWORD err);

 

ErrorString.cpp:
#include "stdafx.h"

#include "resource.h"
#include "ErrorString.h"

/****************************************************************************
*                                 ErrorString
* Inputs:
*       DWORD err: Error code
* Result: CString
*       String message
****************************************************************************/

CString ErrorString(DWORD err)
    {
     CString Error;
     LPTSTR s;
     if(::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
            FORMAT_MESSAGE_FROM_SYSTEM,
            NULL,
            err,
            0,
            (LPTSTR)&s,
            0,
            NULL) == 0)
    { /* failed */
     // Unknown error code %08x (%d)
     CString fmt;
     CString t;
     fmt.LoadString(IDS_UNKNOWN_ERROR);
     t.Format(fmt, err, LOWORD(err));
     Error = t;
    } /* failed */
     else
    { /* success */
     LPTSTR p = _tcsrchr(s, _T('\r'));
     if(p != NULL)
        { /* lose CRLF */
         *p = _T('\0');
        } /* lose CRLF */
     Error = s;
     ::LocalFree(s);
    } /* success */
     return Error;
    } // ErrorString



 

MFC学习记录002——GetLastError()报错信息查看 如果遇到编译成功,调试运行的时候出错,一般情况下VS会直接跳到错误行,如果看到错误行还不明白原因,可以把一下代码放在错误行的后面,再去运行就会给出具体的错误原因。(或者是把这段代码放在你觉得可能出错的地方的后面等等,随你怎么用都可以) 加粗样式 参考资料:MFC中查看失败信息GetLastError() //========= 这段代码,我愿称之为 “神代码” (用于检查错误具体是什么,简直是我这个菜鸟的福星) LPVOID lpMsgBuf; FormatMessage( FORMAT_MESSAGE_ 阅读详情

相关推荐

MFC实现HTTP文件下载:WinInet方案与工业级实践指南

HTTP文件下载是网络编程中的基础功能,其核心原理是通过客户端向服务器发送请求并接收响应数据流。在Windows桌面开发领域,MFC框架与WinInet API的结合为这一需求提供了原生、高效的解决方案。WinInet作为微软官方库,深度集成于Windows系统,能无缝处理代理、认证等复杂网络场景,技术价值在于为MFC应用提供了稳定、低依赖的网络通信能力。在应用场景上,尤其适合需要维护历史代码库或开发企业内部工具的开发者。本文聚焦于如何利用WinInet实现一个健壮的下载模块,涵盖从会话管理、错误处理到断点

ctpaknc9526的博客 388

MFC中使用CString时遇见的问题

CString转换为int型使用_ttoi或者atoi直接进行类型转换; CString::Format()函数时报错:Buffer too small ……..。这是因为CString型的url在调用format函数时内存重新分配导致的错误,需要重新定义一个cstring类型的变量。 GetDlgItemText(IDC_EDIT1,url); GetDlgItemText(IDC_

panrong_pan的博客 1290

基于MFC与C++的高效桌面文件管理器:查重、批量操作与性能优化

文件管理是软件开发与日常工作中处理海量数据的基础需求,其核心在于高效、准确地组织与操作文件。从原理上看,文件管理涉及文件系统I/O、数据哈希计算、多线程调度等底层技术。在技术价值上,优秀的文件管理工具能显著提升工作效率,减少人为错误,尤其在处理重复文件、批量重命名等场景下。应用场景广泛,包括开发者的项目资产整理、资料管理员的文档归档、以及任何需要处理大量本地文件的Windows用户。本文聚焦于利用MFC框架与C++实现一个高性能桌面文件管理器,深入探讨了**文件查重**算法与**多线程**架构的设计,通过分

weixin_33859844的博客 307

CString 使用详解

CString::MakeUppervoid MakeUpper( );Remarks备注Converts this CString object to an uppercase string.将原对象的所有小写英文字母转换为大写。(只是将小写的英文字母转换为大写,对于其它的字符不做变化,例如:大写字符,数字,汉字)Example实例The following example de

尹成的技术博客 3703

用ADS复现一篇MTT顶刊的GAN功率放大器:从理论推导到版图仿真的完整避坑指南

本文详细解析了如何利用ADS软件复现MTT顶刊中的E/F3类GaN功率放大器设计,从理论推导到版图仿真的全流程。通过核心设计理念解析、ADS环境配置、输出匹配网络优化等关键步骤,提供了一套完整的工程实践指南,帮助工程师跨越学术理论与实际应用的鸿沟,实现高效率射频功率放大器的设计。

weixin_30654583的博客 315

Vivado ChipScope Debugging: Overcoming Common DRC Errors in FPGA Design

本文深入解析Vivado ChipScope调试中常见的DRC错误,特别是AVAL-244和AVAL-245等时钟相关问题,提供实用的Tcl命令解决方案和最佳实践。通过将DRC错误降级为警告的技巧,帮助FPGA设计者高效完成调试流程,同时强调何时应保留DRC检查以确保设计可靠性。

weixin_30335575的博客 416

初学MFC错误总结

一、C++中format用法: int a=1; CstringS; S.format(“%d”,a);             //错误用法,vc6不区分UNICODE格式,所以可以编译 S.format(_T(“%d”),a);      //正确用法,原因vs2005以上版本支持UNICODE格式   ComName.Format(_T("\\\\.\\COM%d"),m_Com

净无邪博客 562

ADS2023仿真变容二极管特性

仿真S-Param仿真控件,设置为Single Point,将频率设置为1MHz,同时勾选Z-parameters,取消S-parameters,从元件库中选择元器件搭建原理图,并根据器件spice提供的相关参数,对原理图中器件参数进行修改,修改完成的电路图如下图所示。添加var控件和MeasEqn控件,相关设置如图所示,Ct为变容管的电容值,Q0为其品质因数。因此,对变容二极管的模型仿真结果是可以信赖的。将其解压,在spice文件夹中,可以找到我们想要的器件参数,和仿真简要电路图。

weixin_45811090的博客 1万+

MFC网络通信 用套接字 实现简单收发信息

我是用vs2013编写的。 一,建客户端项目 打开vs,新建对话框项目,勾选套接字 点击完成。 接下来,修改对话框界面 增加两个EDIT控件,上面的ID是IDC_HIST,多行,只读,无水平滚动条,有垂直滚动条。下面的ID是IDC_INPUT,其他不做改变。增加一个按钮控件,ID是IDC_BUTTON1,文字为连接。OK按钮文字修改为发送(&s) 增加一个类,可以点击项目菜单添加类ConnectSocket,基类是CSocket。 代码实现: 在ClientD...

ywqb95的博客 3519

光学薄膜设计入门:Essential Macleod中文版从安装到实战全攻略

本文为光学薄膜设计初学者提供Essential Macleod软件从安装部署到实战应用的全流程中文指南。详细解析了软件核心界面、材料管理及工作流程,并通过一个完整的宽带增透膜设计实例,手把手演示膜系构建、优化与分析方法,帮助用户快速掌握这一业界标杆工具,跨越理论与实操的门槛。

weixin_29309475的博客 981

《YOLOv8:从入门到实战》专栏介绍 & 专栏目录

本专栏涵盖了丰富的YOLOv8算法从入门到实战系列教程,专为学习YOLOv8的同学而设计,堪称全网最详细的教程!🌈🌈🌈

小哥谈 6487

FormatMessage函数

在开发软件的过程里,经常要做的工作就是调试程序,许多问题的出现,不但是逻辑的问题,还有可能是对API的不熟悉,或者某种条件下调用API会出错的。那么这些出错的原因是什么呢?通常只获取到错误码,也就是通过函数GetLastError得到。当然可以根据这个错误码去查找MSDN就可以知道出错的原因,但有时在客户那里并没有MSDN,那么就需要把调用API函数出错的信息显示出来,或者写到LOG里去。这时就需

芝麻软件工作室的专栏 368

HTML满屏跳动的爱心(完整代码)

HTML语言实现满屏跳动爱心的完整代码。

AIGC 12万+

vc,mfc,GetLastError 错误代码 ,FormatMessage 显示错误信息

<br />DWORD dwError = GetLastError(hwnd, IDC_ERRORCODE, NULL, FALSE); HLOCAL hlocal = NULL; // Buffer that gets the error message string // Get the error code's textual description BOOL fOk = FormatMessage( FORMAT_MESSA

1610

智能驾驶辅助系统(ADAS)全解析:功能详解 + 技术原理 + 实战案例

智能驾驶辅助系统(ADAS)是现代汽车技术的重要组成部分,旨在提升驾驶安全性和便利性。本文详细解析了ADAS的多个功能模块,包括自适应巡航控制(ACC)、车道偏离预警/车道保持辅助(LDW/LKA)、前向碰撞预警/自动紧急制动(FCW/AEB)、盲区检测/变道辅助(BSD/BSM)、倒车影像、自动泊车辅助(APA)、交通标志识别(TSR)、自动远光控制(AHB)、后方交叉来车预警(RCTA)和驾驶员疲劳监测。每个功能模块都基于特定的技术原理,如毫米波雷达、摄像头、传感器融合和深度学习算法,以实现对车辆周围环

weixin_43199439的博客 2099

Kubernetes 集群升级与备份恢复:从 1.24 到 1.30 的平滑升级实战

详解 Kubernetes 集群版本升级流程(kubeadm 方式),包括前置检查、组件逐个升级、节点排水与恢复,同时演示 etcd 备份与集群灾难恢复方案。

kaixin110a的博客 35

错误处理

错误处理错误处理是>这本书的第一章,由些可见,错误处理在我们写软件时的重要性是多么重要,当一个函数出错时,应该提示使用此函数的人员,出错的原因,以便于使用者进行修改,windows的错误处理就很棒,当我们使用windows API或者MFC类时,我们可以通过GetLastError来获取具体的错误原因,然后可以利用VS的工具Error Lookup来查找错误的原因,或者使用FormatMess

ithero_zhou的专栏 1346

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Windows核心编程之核心总结(第一章 错误处理)(2018.5.26)

前沿 学习Windows核心编程是步入Windows编程殿堂的必经之路,2018年寒假重温了计算机操作系统知识,前阵子又过学习Windows程序设计方面的基础,正所谓打铁要乘热,所以我又入了Windows核心编程的坑啦,哈哈~ 学习目标 每一章的学习都要明确一个目标,就是你学完这一章之后你能做些什么?好的,我们一步步来学习第一章节错误处理。以下是这一章节的学习目标:1.了解Windows函数的错误...

weixin_33910137的博客 171

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

MFC中基于WinInet封装CHttpClient类:零依赖HTTP客户端实现指南

HTTP客户端是网络编程中的基础组件,用于在客户端与服务器之间进行数据交换。其核心原理是通过建立TCP连接,遵循HTTP协议发送请求和接收响应。在Windows平台的C++桌面开发中,直接使用系统原生API构建HTTP客户端,能实现零第三方依赖、深度集成开发框架并保障部署的简洁性。对于MFC(Microsoft Foundation Classes)应用程序而言,利用系统内置的WinInet API封装自定义的CHttpClient类,是一种高度工程实践导向的技术方案。该方案特别适用于需要严格控制依赖、或已

weixin_33766805的博客 315

MFC GetLastError 函数

GetLastErrorSyntax(语法)Parameters(参数)Return Value(返回值)Remarks(备注)作者的话(敬请期待) Retrieves the calling thread’s last-error code value. The last-error code is maintained on a per-thread basis. Multiple threads do not overwrite each other’s last-error code.【检索调用线程

sty_app的博客 760

MFC System Error Codes (0-499)

System Error Codes 0-499 The following table provides a list of system error codes (errors 0 to 499). They are returned by the GetLastError function when many functions fail. To retrieve the description text for the error in your application, use the Forma

sty_app的博客 913

VC中GetLastError()获取错误信息的使用,以及错误代码的含义

转载:http://www.seacha.com/article.php/knowledge/windows/mfc/2011/0423/335.html VC中GetLastError()获取错误信息的使用 在VC中编写应用程序时,经常需要涉及到错误处理问题。许多函数调用只用TRUE和FALSE来表明函数的运行结果。一旦出现错误,MSDN中往往会指出请用GetLastError()函...

weixin_30532759的博客 2057

(1)第1章对程序错误的处理

[将书上的摘抄一些,便于自己理解] 1. 既然是写程序,就不能避免错误,了解windows的错误处理是debug的必修课,也就是通过错误处理和返回我们能够知道编写的函数运行成还是失败,按照书上所说,微软编译了一个所有可能的错误代码的列表,并且为每个错误代码分配了一个3 2位的号码。 G e t L a s t E r r o r函数: DWORD GetLastError(); //返回...

loloopop的专栏 170

《Windows核心编程》第一章 读书笔记

<br />今天读《Windows核心编程》的第一章:错误处理,按照书上的例子写出了一个ErrorShow的例子,其中涉及到了挺多“核心”的东西,先记录下来与大家分享<br /><br />首先我们需要一些基础知识。<br />调用Windows函数时,它会先验证我们传给他的参数,然后再开始执行任务。如果传入的参数无效,或者由于其他原因导致操作无法执行,则函数的返回值将给出函数因为某些原因失败了。<br />VOID这个函数不可能失败,只有极少数的Windows函数返回值类型为VOID<br />BOOL如

Kunsa的编程专栏 1060
上一篇: 将MFC的CString 类型转化为C++标准数据类型std::string
下一篇: 清除一个页面中所有TextBox的值
xiaoding133
博客等级 码龄19年 415粉丝 159原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值