首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

模态对话框对象的一个疑问解决方法

2012-05-05 
模态对话框对象的一个疑问CSelfCheckMapSelfCheckdlg1ASSERT(SelfCheckdlg1) SelfCheckdlg1.m_nEvent

模态对话框对象的一个疑问
CSelfCheckMap SelfCheckdlg1;
ASSERT(SelfCheckdlg1) ;
SelfCheckdlg1.m_nEvent = nEvent;
if(SelfCheckdlg1.DoModal())
{
;
}
// ASSERT(SelfCheckdlg1) ;会弹出错误,SelfCheckdlg1对象的内存地址为0X00000000,那SelfCheckdlg1.m_nEvent = nEvent;虽然给SelfCheckdlg1对象的UINT型变量m_nEvent赋值,但这个对象根本就不指向正确的内存地址,这个赋值操作有意义吗?

[解决办法]
CSelfCheckMap SelfCheckdlg1;
这样定义后,对话框实例已经存在,这个用&SelfCheckdlg1可以看到地址,所以SelfCheckdlg1.m_nEvent = nEvent;是没有问题的。但由于对话框对象还没有创建,因此其封装的句柄m_hWnd还是空的,所以ASSERT会通不过。
对话框类是对窗口句柄m_hWnd的一个封装类,使用其构造函数即可创建对话框对象,但其封装的窗口句柄必须通过对话框类的Create调用后才会创建。

热点排行