每当我打开对话框时自动调用功能

时间:2013-11-12 12:06:55

标签: c++ mfc dialog

我的CMyView课程中有一些代码。在那里,我打开了一个包含DoModal()的对话框:

AnotherDialog dlg;
dlg.DoModal();  

现在我想自动运行一个功能。问题在于,每当我调用dlg.DoModal()时,编译器都会等待,直到我再次关闭Dialog窗口,继续将我的代码运行到CMyView类中。该函数也可以自动调入我的AnotherDialog类。 任何人都可以告诉我,每当我打开另一个Dialog时我怎么能自动运行一个函数?

2 个答案:

答案 0 :(得分:2)

AnotherDialog有一个构造函数AnotherDialog::AnotherDialog()。每次创建对话框时都会调用从那里调用的任何函数而不提供参数。如果添加构造函数重载,则每个构造函数可以具有不同的行为,并且由您决定使代码不会混淆。 (即,只是保持一致)

如果AnotherDialog不是您的班级,您可能希望从中导出:class MyOtherDialog : public AnotherDialog。您现在可以拥有一个MyOtherDialog::MyOtherDialog构造函数,该构造函数在AnotherDialog::AnotherDialog()之后调用。

您还可以在现有类或派生类中将代码添加到DoModal()

答案 1 :(得分:0)

视图类中的代码正在等待,因为您正在使用DoModal()方法。根据定义,DoModal是同步的,所以它会在继续之前等待对话关闭。在不了解您的设计的情况下,我猜你应该使用“无模式”对话框调用。