我的CMyView
课程中有一些代码。在那里,我打开了一个包含DoModal()
的对话框:
AnotherDialog dlg;
dlg.DoModal();
现在我想自动运行一个功能。问题在于,每当我调用dlg.DoModal()
时,编译器都会等待,直到我再次关闭Dialog窗口,继续将我的代码运行到CMyView
类中。该函数也可以自动调入我的AnotherDialog
类。
任何人都可以告诉我,每当我打开另一个Dialog时我怎么能自动运行一个函数?
答案 0 :(得分:2)
AnotherDialog
有一个构造函数AnotherDialog::AnotherDialog()
。每次创建对话框时都会调用从那里调用的任何函数而不提供参数。如果添加构造函数重载,则每个构造函数可以具有不同的行为,并且由您决定使代码不会混淆。 (即,只是保持一致)
如果AnotherDialog
不是您的班级,您可能希望从中导出:class MyOtherDialog : public AnotherDialog
。您现在可以拥有一个MyOtherDialog::MyOtherDialog
构造函数,该构造函数在AnotherDialog::AnotherDialog()
之后调用。
您还可以在现有类或派生类中将代码添加到DoModal()
。
答案 1 :(得分:0)
视图类中的代码正在等待,因为您正在使用DoModal()方法。根据定义,DoModal是同步的,所以它会在继续之前等待对话关闭。在不了解您的设计的情况下,我猜你应该使用“无模式”对话框调用。