Как завершить диалоговое приложение MFC из CDialog::OnInitDialog или сразу после завершения этой функции?

В одном случае моего приложения я хочу завершить приложение в диалоговом окне OnInitDialog или сразу после этой функции. Есть ли способ сделать это?

Я попытался использовать сообщения Windows - в OnInitDialog, вызывающем SendMessage, и в обработчике отправленного сообщения, вызывающего OnClose, - но он не сделал то, что я хотел, так как диалоговое окно все еще появлялось.

3 ответа

Решение

PostQuitMessage(0) в WM_INITDIALOG Тело обработчика сделает работу.

Вы можете смоделировать пользователя, нажав на X в углу диалога, отправив WM_SYSCOMMAND сообщение:

PostMessage(WM_SYSCOMMAND, SC_CLOSE, 0);

Самое простое решение:

          CMyDialog::OnInitDialog()
    {
       if( "My Condition is invalid" )
       {
         EndDialog(-1);
         return FALSE;
       }
    }

Вы должны сделать «вернуть FALSE» сразу после EndDialog, потому что, как вы можете прочитать в документации Microsoft CDialog(classe), EndDialog не закрывает диалог немедленно, а генерирует уведомление, которое при обработке Microsoft должно завершить диалог .

Другие вопросы по тегам