爱收集资源网

系统管理对话框:解析.h文件中的NULL问题

网络整理 2023-09-25 23:08

问题描述:

须要一个系统管理页面,因此写了个dll模态对话框是什么时候实例的对话框,调用形成系统管理对话框,

系统管理对话框中使用TabCtrl形成标签页,

每位标签页又绑定一个子对话框,

在系统管理对话框类初始化TabCtrl对象时模态对话框是什么时候实例的对话框,用:

模态对话框是什么时候实例的对话框_模态对话框的工作流程_对话框模态和非模态

子对话框类对象.Create(IDD_子对话框, GetDlgItem(IDC_TabCtrl));
//或:子对话框类对象.Create(子对话框类::IDD, &TabCtrl对象);

绑定子对话框对象和TabCtrl对象时,子对话框对象==NULL

问题解决:

在Create前加一句AFX_MANAGE_STATE(AfxGetStaticModuleState());,如

AFX_MANAGE_STATE(AfxGetStaticModuleState());
子对话框类对象.Create(IDD_子对话框, GetDlgItem(IDC_TabCtrl));

模态对话框的工作流程_模态对话框是什么时候实例的对话框_对话框模态和非模态

问题缘由:

在dll外调用时,须要指定让dll里的界面代码使用该dll的资源(Resource.h)

MFC的对话框装载资源是通过获取当前线程对应的ModuleState保存的ResourceHandler来装载资源的。

所以,dll里的代码,须要在函数的入口,首先把当前执行线程的ModuleState换成该dll的State,这样能够装载该dll的资源!

否则会由于找不到资源造成新建对话框句柄为NULL

模态对话框是什么时候实例