2013-11-12 4 views
-1

У меня есть код в моем классе CMyView. Там я открываю диалог с DoModal():Функция вызова автоматически, когда я открываю диалог

AnotherDialog dlg; 
dlg.DoModal(); 

Теперь я хочу, чтобы автоматически запускать функцию. Поблем есть, когда я вызываю dlg.DoModal(), компилятор ждет, пока я снова закрою окно диалога, чтобы продолжить запуск моего кода в класс CMyView. Функция также может быть автоматически вызвана в мой класс AnotherDialog. Может ли кто-нибудь сказать мне, как я могу автоматически запускать функцию всякий раз, когда открываю другой диалог?

ответ

2

AnotherDialog имеет конструктор, AnotherDialog::AnotherDialog(). Любая вызываемая оттуда функция будет вызываться каждый раз, когда создается диалог без предоставления аргументов. Если вы добавите перегрузки конструктора, каждый конструктор может иметь другое поведение, и вам решать, чтобы ваш код не сбивал с толку. (I.e просто быть последовательным)

Если AnotherDialog не ваш класс, вы можете извлечь из него вместо этого: class MyOtherDialog : public AnotherDialog. Теперь у вас может быть конструктор MyOtherDialog::MyOtherDialog, который вызывается после AnotherDialog::AnotherDialog().

Вы также можете добавить код в DoModal(), снова в существующий класс или производный класс.

0

Код в вашем классе вида ждет, потому что вы используете метод DoModal(). По определению DoModal является синхронным, поэтому он будет ждать закрытия диалогового окна перед продолжением. Не зная слишком много о вашем дизайне, я бы предположил, что вместо этого вы должны использовать вызов «немодального» диалога.

Смежные вопросы