// ErrorMsg.h
#pragma once
class CErrorMsg
{
public:
CErrorMsg(void);
virtual ~CErrorMsg(void);
public:
DWORD GetLastError(DWORD dwErrorId, LPTSTR lpszError, DWORD dwLength);
private:
LPCTSTR m_pErrorMsg;
HLOCAL m_hLocal;
};
// ErrorMsg.cpp
#include "StdAfx.h"
#include "ErrorMsg.h"
CErrorMsg::CErrorMsg(void) : m_pErrorMsg(NULL), m_hLocal(NULL)
{
}
CErrorMsg::~CErrorMsg(void)
{
if(NULL != m_hLocal)
{
LocalFree(m_hLocal);
m_hLocal = NULL;
}
m_pErrorMsg = NULL;
}
DWORD CErrorMsg::GetLastError(DWORD dwErrorId, LPTSTR lpszError, DWORD dwLength)
{
if(NULL == m_pErrorMsg)
{
if(NULL != m_hLocal)
{
LocalFree(m_hLocal);
m_hLocal = NULL;
}
if(!FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_ALLOCATE_BUFFER,
NULL, dwErrorId, MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), (PTSTR)&m_hLocal, 0, NULL))
{
return 0;
}
if(NULL == m_hLocal)
{
return 0;
}
m_pErrorMsg = (PCTSTR)LocalLock(m_hLocal);
}
if(NULL == lpszError)
{
if(NULL != m_pErrorMsg)
{
dwLength = _tcslen(m_pErrorMsg) + 1;
}
else
{
dwLength = 0;
}
}
else
{
_tcscpy_s(lpszError, dwLength, m_pErrorMsg);
m_pErrorMsg = NULL;
if(NULL != m_hLocal)
{
LocalFree(m_hLocal);
m_hLocal = NULL;
}
}
return dwLength;
}
// Test code :
#include "stdafx.h"
#include "ErrorMsg.h"
int _tmain(int argc, _TCHAR* argv[])
{
CErrorMsg err;
DWORD dwLength = 0;
TCHAR* pBuf = NULL;
dwLength = err.GetLastError(2, pBuf, 0);
if(0 != dwLength)
{
pBuf = new TCHAR[dwLength];
}
if(NULL != pBuf)
{
err.GetLastError(2, pBuf, dwLength);
_tprintf(_T("%s\n"), pBuf);
}
delete[] pBuf;
pBuf = NULL;
return 0;
}相关推荐
手把手教你用X-AnyLabeling实现医学图像标注:从SAM模型选择到多边形优化全流程
本文详细介绍了如何使用X-AnyLabeling平台结合Med-SAM等专业模型实现医学图像的高效标注。从环境配置、模型部署到实战工作流,涵盖智能辅助标注、低对比度解决方案及团队协作方案,帮助医疗从业者大幅提升标注效率与质量。特别适合处理CT/MRI等医学影像的复杂标注需求。
pyinstaller打包程序时的坑
https://lvwenhan.com/convertico/ 图标的格式目前只能是ico,而且图片的大小是有要求的,测试发现大小16x16可用, 如果用其它文件格式,比如png格式,打包提示的信息怪怪的如下: win32ctypes.pywin32.pywintypes.error: (193, ‘LoadLibraryExW’, ‘’) ...
易灵思Ti60F100 FPGA的HyperRAM实战:从硬件连接到Native接口时序调试
本文详细介绍了易灵思Ti60F100 FPGA内置HyperRAM控制器的实战应用。文章从硬件设计要点(如400MHz+信号完整性、等长匹配)切入,重点解析了如何通过Interface Designer配置高效的Native接口,并分享了其时序详解与调试技巧,为开发者提供了一份从硬件连接到软件调试的深度指南。
解决PyInstaller打包程序exe在win7运行异常问题(OSError: [WinError 87] 参数错误、Error loading Python DLL python39.dll等)
win7运行python打包程序的排坑指南。
M×N扫描序列图像拼接、大视场图像拼接、全景图像拼接、2D网格拼图方法、累计误差消除(显微图像/航拍图像等)
M×N序列图像完整拼接方法前言一、最朴实的一般方法二、广度优先搜索算法1.引入库2.读入数据整体路径优化算法 前言 1、网上有很多介绍图像两两拼接的算法,但是缺少对M×N张子图两两相对位置关系获得整体误差较小,肉眼下无明显错位的完整图像的算法实现。 2、由于拼接算法的不稳定可能会产生不同程度的误差,那么如何需要选择(搜索)误差较小拼接路径。 一、最朴实的一般方法 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、广度优先搜索算法 1.引入库 代码如下(示
手把手教你完成基于matlab的LSTM时间序列分析
时间序列是按时间顺序组织的数字序列,是数据分析中重要的处理对象之一。时间序列的主要特点是数据获取方式一般具有客观性,能反映某种现象的变化趋势或统计指标,进而预测未来走向,这在本质上也是一个回归预测的问题。长短时记忆网络(Long Short-Term Memory,LSTM)是一种循环神经网络,适合处理有更长时间跨度的内部记忆,被广泛应用于时间序列分析,能够保持数据的内在持续性,反映数据的细粒度走势,具有良好的预测效果。
FormatMessage与GetLastError配合使用,排查windows api调用过程中的错误
前一段时间在学习windows api调用过程中,遇到过一些调用错误或者程序没能显示预期的结果,或者直接出现vc运行时错误。 这对新手来说是司空见惯的事,因为不太熟悉难免会出错,出错的信息如果能显示很好的关键字到网上搜索一下倒是很好的,例如 返回错误代码:2。你可以使用Visual studio套件里面的Error Lookup查询一下系统消息列表中的请求消息(system message-t...
2ED2410-EM:12v / 24v智能模拟高侧MOSFET栅极驱动器
12v / 24v智能模拟高侧MOSFET栅极驱动器。2ED2410-EM具有输入CPP和CPN的电压比较器。该比较器可用于基于任何模拟电压触发SAFESTATE模式,甚至是外部电压2ED2410-EM。CPP为比较器的正输入,CPN为负输入。VcPREF可以通过微控制器进行调节,也可以通过板载电源芯片(如英飞凌SBC)或简单的分压器在限制VcP(REF)内进行固定,以保持稳定性。使用此比较器允许2ED2410-EM进入SAFESTATE并独立于微控制器关闭MOSFET。
MessageFormat:格式化字符串
实际需要对[]内的内容进行替换。如果调用,那需要执行多次。而使用。
QT C++ AI棉花智能变量灌溉工上位机(信创完整版)
北斗履带灌溉机器人/田间分区电磁阀基站 → 多层土壤温湿度/盐分EC传感器实时采集墒情 → 双目AI视觉扫描棉田长势、病苗分布 → AI融合**生育期+土壤墒情+盐分+棉株长势**计算变量灌溉定额、水肥配比、灌溉时长 → 分区电磁阀/变频水泵变量供水,病弱苗地块减量、干旱地块增量;墒情、盐分、长势多因子闭环修正灌水量;多层土壤含水率(0–10/20–40/40–80cm)、土壤EC盐分、土壤温度、空气温湿度、蒸发量、北斗地块坐标、管道水压、水肥罐液位、分区流量计、水泵电机负载、滴灌带压力反馈。
[HQChart教程] 去掉“仅学习使用”文字提示的小技巧
最近用 HQChart 做图表时,发现左下角有“仅学习使用”的字样。这种水印虽然是默认的,但如果要展示给客户,可能会显得不够专业。还好,这个问题很好解决,只需要简单修改一下配置。
python+html开发桌面应用程序(三)程序打包和运行遇到的问题
前面两章介绍了python+html开发桌面应用程序的实例,本文介绍程序的打包和程序运行的问题 一、程序打包 python是用pyinstaller来打包,写一个打包函数来实现, def CreateExe(filename: str): cmd = 'venv\Scripts\python.exe -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ -r pyinstaller' print('{0}, result={1
华为od 面试八股文_测试/测试开发_01_含答案
华为od面试八股文_测试/测试开发_01_含答案
FormatMessage函数的用法
FormatMessage函数 在《windows核心编程》中第一个示例便是它的使用。 这个函数我用了几次之后终于明白它的用法; 这个函数是用来格式化消息字符串,就是处理消息资源的。消息资源是由mc.exe编译的,详细请在msdn中搜索mc.exe。 先来看下它的函数原型 DWORD WINAPI FormatMessage( __in DW
lwip-2.0.3
lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。
华为的C语言编程规范.pdf
华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。
FormatMessage
FormatMessage FormatMessage函数 在《windows核心编程》中第一个示例便是它的使用。 这个函数我用了几次之后终于明白它的用法; 这个函数是用来格式化消息字符串,就是处理消息资源的。消息资源是由mc.exe 编译的,详细请在msdn中搜索mc.exe。 先来看下它的函数原型 DWORD WINAPI FormatMessage( __in
蓝牙模块HM-10手册
蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。
GetLastError 和 FormatMessage搭配使用的模板
void ShowError() { TCHAR* lpMsgBuf; FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER| //自动分配消息缓冲区 FORMAT_MESSAGE_FROM_SYSTEM, //从系统获取信息 NULL,GetLastError(), //获取错误信息标识 MAKELANGID(LANG_NEUTRAL,SUBLAN
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
FormatMessage错误消息处理函数
LPTSTR GetLastErrMsg(){ LPTSTR lpTStr; DWORD dwErr=GetLastError(); FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwErr, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT)
FormatMessage 使用详解
本文翻译自MSDN FormatMessage函数的功能是格式化一个消息字符串。函数需要一个消息定义(message definition)作为输入。这个消息定义可以通过一个缓冲区或一个已经加载了的消息资源表模块传入本函数。调用者还可以通过搜索系统消息资源表来传入这个消息定义。FormatMessage函数在一个消息资源表中是通过一个消息标识符和一个语言标识符来找到一个消息定义。函数如果被调用
Windows API一日一练(81)FormatMessage函数
Windows API一日一练(81)FormatMessage函数在开发软件的过程里,经常要做的工作就是调试程序,许多问题的出现,不但是逻辑的问题,还有可能是对API的不熟悉,或者某种条件下调用API会出错的。那么这些出错的原因是什么呢?通常只获取到错误码,也就是通过函数GetLastError得到。当然可以根据这个错误码去查找MSDN就可以知道出错的原因,但有时在客户那里并没有M
获取WindowsAPI错误
通过GetLastError或其他获得API返回的错误 通过FormatMessage格式化错误信息,以便显示出来。 DWORD WINAPI FormatMessage( __in DWORD dwFlags, __in LPCVOID lpSource, __in DWORD dwMessageId
Windows核心编程:第1章 错误处理
Github https://github.com/gongluck/Windows-Core-Program.git //第1章 错误处理.cpp: 定义应用程序的入口点。 // #include "stdafx.h" #include "第1章 错误处理.h" int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINS...
显示GetLastError函数的错误信息
void ShowErrMsg() { TCHAR szBuf[80]; LPVOID lpMsgBuf; DWORD dw = GetLastError(); FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,NULL,dw,MAKELANGID(LANG_NEUTRAL, SUBLANG...
Windows Internals 笔记——错误处理
1.Windows函数检测到错误时,会使用一种名为“线程本地存储区”的机制将相应的错误代码与“主调线程”关联到一起。这种机制使得不同的线程能独立运行,不会出现相互干扰对方的错误代码的情况。 2.GetLastError返回32位的错误代码表,每个错误有三种表示:一个消息ID、消息文本、和一个编号。函数失败后应立即调用GetLastError,否则很可能被改写。 // // Mess...
VC获取错误消息
CString GetSystemErrorMessage() { CString strRet; LPVOID lpMsgBuf; DWORD dw = GetLastError(); FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,NULL,dw,GetSystemDefaultLangI
获取 GetLastError 文本信息
DWORD derr = GetLastError(); derr = derr; LPVOID lpMsgBuf; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), 0, // Defau...
455



被折叠的 条评论
为什么被折叠?



