MFC为什么不报空指针异常 2宏定义不改源码 用替换 用Log函数替换printf等 #define printf Log 优化版底层类Log显示

这里pWnd为NULL,但MFC为什么不报空指针异常,而是调用了当前文件的ShowInfo函数。

进入ShowInfo函数后m_editDisplay又是空指针,直接忽略了这句,继续向后执行。



2宏定义不改源码 用替换 用Log函数替换printf等 #define printf Log

优化版底层类Log显示

cpp 复制代码
方法一:
//全局定义
CEdit* m_edit;

在初始化里
m_edit = &edit; // 指向当前界面edit

Log里操作edit显示


方法二:
void(*pLogMethod)(const char* strMsg, ...); //定义一种函数指针类型
pLogMethod g_pLogMethod = nullptr; 

static void Log(const char* strMsg, ...)
{
	char szBuf[3000] = "";
	va_list varg;
	va_start(varg, strMsg);
	int iRet = vsprintf_s(szBuf, strMsg, varg);
	va_end(varg);

	pWnd->ShowInfo(szBuf); //这里可以直接操作edit控件显示。
}
CConfigDlg::CConfigDlg(CWnd* pParent /*=nullptr*/)
	: CDialogEx(IDD_DIALOG_VersionCompareWriteConfig, pParent)
{	
	pWnd = this;
	g_pLogMethod = Log; 
}


使用 if (g_pLogMethod != nullptr) { g_pLogMethod(app + "应用安装失败。"); }
相关推荐
wabs6665 分钟前
关于二叉树【力扣572.另一棵树的子树的思考】
数据结构·c++·算法·leetcode·二叉树
风合星语1 小时前
2026 ROS 2 Lyrical C++ 入门(五):Action 实战——任务反馈、取消与超时处理
c++·机器人·ros2·异步编程·lyrical
91刘仁德2 小时前
C++ 继承和多态 设计模式
c语言·c++·笔记
库玛西2 小时前
哈夫曼树与前缀编码:数据压缩的贪心核心
c语言·c++·笔记·考研
别动我齐刘海3 小时前
ROS2 Jazzy + C++ 实战路线——进阶学习3
c++·人工智能·vscode·python·算法·机器学习·机器人
0+1113 小时前
算法 --滑动窗口
c++·算法·leetcode
stolentime3 小时前
(有原题)CSP-S2026第一轮试题(附答案解析、markdown源码)
c++·csp
m0_734571763 小时前
深入理解C++ RAII
开发语言·c++
hetao17338373 小时前
2026-09-18 hetao1733837 的刷题记录
c++·算法
stolentime4 小时前
CSP-J2026第一轮试题(附答案解析、markdown源码)
c++·csp