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 + "应用安装失败。"); }
相关推荐
郝学胜_神的一滴1 天前
CMake 30:循环语法全解|foreach_while双循环精讲、迭代技巧与实战避坑指南
c++·cmake
卷无止境3 天前
C++ 的Eigen 库全解析
c++
卷无止境3 天前
现代 C++特性大盘点:一门脱胎换骨的老语言
c++·后端
郝学胜_神的一滴3 天前
CMake 27:缓存变量的特性、语法、类型与实操全解
c++·cmake
博客18005 天前
酷宝的使用方法,超好用的免费界面库,C++、MFC可用
c++·mfc·界面库·库来帮·酷宝
郝学胜_神的一滴5 天前
CMake 026:属性体系精讲、四大作用域全解 & 实战代码落地
c++·cmake
众少成多积小致巨6 天前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++
clint45610 天前
C++进阶(1)——前景提要
c++
夜悊10 天前
C++代码示例:进制数简单生成工具
c++
郝学胜_神的一滴10 天前
CMake 021: IF 条件判据详诠
c++·cmake