我在MFC应用程序中工作,它有很多对话框。调试时,我无法分辨哪个类或函数创建了此对话框。
为了说明问题,我创建了一个简单的基于对话框的MFC应用程序。在调试模式下运行并暂停调试。
我可以看到使用CDialog::DoModal()
在调用堆栈中调用DoModal。我如何准确理解哪个函数以及从哪个类调用DoModal()
?
答案 0 :(得分:2)
如果在CDialog构造函数中设置断点,则更容易找到该类。从那里的调用堆栈,您将能够看到您的对话框类。
答案 1 :(得分:0)
您可以在CDialog::OnInitDialog()
中设置断点,最终由DoModal()
调用。
OnInitDialog
方法几乎总是被“叶子”CDialog派生类覆盖(虽然不一定),但更重要的是,总是被链接回来。所以只需将调用堆栈向上移动到OnInitDialog()
的“第一次”调用,这应该引用该类。
如果它不是'叶子'类,或者它没有链接,@ JoeWillcoxson的答案仍然有效。