Закрытие окном родителя модальных диалогов в MFC

 

Один из вариантов завести в Родительском окне Указатель типа CDialog

Присваивать ему указатель каждого открываемого модального диалога перед DoModal();

И обнулять после

При совершении какой либо операции в родительском окне требующей его закрытия, а значит и закрытия порожденных окон, можно просто вызывать EndDialog(RetCode); для запомненного указателя.

Пример:

//Объявление класса родительского окна
CDialog *pModalDialog;
...
//Конструктор родительского окна
pModalDialog = 0;
...
//Открытие модального диалога
CAboutDialog AboutDlg;
pModalDialog = &AboutDlg;
AboutDlg.DoModal();
pModalDialog = 0;
...
//Операция по закрытию
if(pModalDialog)
pModalDialog->EndDialog(-1);