如何确切地查找从哪个类调用DoModal()?

时间:2015-01-07 15:20:13

标签: c++ visual-studio visual-c++ mfc modal-dialog

我在MFC应用程序中工作,它有很多对话框。调试时,我无法分辨哪个类或函数创建了此对话框。

为了说明问题,我创建了一个简单的基于对话框的MFC应用程序。在调试模式下运行并暂停调试。

我可以看到使用CDialog::DoModal()在调用堆栈中调用DoModal。我如何准确理解哪个函数以及从哪个类调用DoModal()

enter image description here

2 个答案:

答案 0 :(得分:2)

如果在CDialog构造函数中设置断点,则更容易找到该类。从那里的调用堆栈,您将能够看到您的对话框类。

答案 1 :(得分:0)

您可以在CDialog::OnInitDialog()中设置断点,最终由DoModal()调用。

OnInitDialog方法几乎总是被“叶子”CDialog派生类覆盖(虽然不一定),但更重要的是,总是被链接回来。所以只需将调用堆栈向上移动到OnInitDialog()的“第一次”调用,这应该引用该类。

如果它不是'叶子'类,或者它没有链接,@ JoeWillcoxson的答案仍然有效。