MFC Как закрыть немодальный диалог при переключении видов - PullRequest
0 голосов
/ 21 марта 2019

У меня есть представление, которое содержит немодальное диалоговое окно.

Все работает нормально, кроме взаимодействия с диалоговым окном, отправляет сообщение об изменении объектов в текущем активном представлении.Это вызывает раздавливание при переключении на новое представление или другое представление, потому что объект не существует в этом новом представлении.

Я хочу спросить, как закрыть немодальный диалог всякий раз, когда представление переключается?

Должно ли оно обрабатываться в классе представления или в классе документа?

Маршрут сообщения - Dialog -> отправить определенное пользователем сообщение -> mainframe -> получить текущий активный вид -> передать сообщение ->просмотреть дескриптор сообщения получить сообщение

Спасибо

1 Ответ

0 голосов
/ 22 марта 2019

И, возможно, имеет смысл сделать это в рамках представления.Итак ...

В .h:

class MyFrm: public CFrameWnd
{
    MyDialog dlg;
};

в .cpp:

MyFrm::MyFrm( )
    :dlg( this )
}

void MyFrm::OnInitialUpdate()
{
    tagDlg.Create( this );
    tagDlg.ShowWindow( SW_NORMAL );
}

И если вы хотите переключить диалог, скажем спункт меню в качестве переключателя.Вместо того, чтобы создавать его в OnInitialUpdate, вы могли бы:

void MyFrm::OnToggleDlg( )
{
    if( ! dlg.GetSafeHwnd( ) )
    {
        dlg.Create( this );
        dlg.ShowWindow( SW_NORMAL );
    }
    else
        dlg.DestroyWindow( );
}

Надеюсь, это имеет смысл.

...