我的 IE 在另一个新对话框的 EndDialog 和 DoModal 上崩溃
Posted
技术标签:
【中文标题】我的 IE 在另一个新对话框的 EndDialog 和 DoModal 上崩溃【英文标题】:My IE crashes on EndDialog and DoModal on another new dialog 【发布时间】:2014-05-24 09:59:42 【问题描述】:我正在使用 m_nRet = DoModal();
打开一个 CDialog(CAxDialogImpl)
在此对话框中,我有一个选项按钮。当我单击此选项按钮时,我需要关闭此现有对话框并打开另一个对话框(我的选项对话框)。为了关闭现有对话框,我首先调用EndDialog(m_nRet)
,然后再次调用DoModal()
打开我的选项对话框。
我能够成功关闭并重新打开另一个对话框。但是,当我尝试关闭这个新选项对话框时,我在后台的 IE 页面会刷新并显示一条消息:
此网页的问题导致 Internet Explorer 关闭并重新打开选项卡。
我是这项技术的新手,非常感谢您的帮助。谢谢!
【问题讨论】:
您是否在第一个对话框类中为您的选项对话框调用DoModal()
(即在您调用EndDialog()
的同一位置)?
您好,爱德华,感谢您的回复!是的,我正在为第一个对话框类中的选项对话框调用 DoModal()(我在其中调用 EndDialog()。
这肯定会导致不可预知的行为——请参阅下面的答案
【参考方案1】:
单击选项按钮时,您需要设置成员变量(例如:m_bInvokeOptionsDlg)或唯一的返回值并退出对话框。
然后调用函数应该检查这个值并调用选项对话框。 调用返回后,您可以循环返回并再次打开初始对话框。
另一种选择是在单击选项按钮时直接调用选项对话框,但随后两个对话框都将可见。
【讨论】:
以上是关于我的 IE 在另一个新对话框的 EndDialog 和 DoModal 上崩溃的主要内容,如果未能解决你的问题,请参考以下文章
在 MFC 中调用 EndDialog() 时,类析构函数何时触发?
WiX:找到重复的符号“ControlEvent:ExitDialog/Finish/EndDialog/Return/1”