Как завершить диалоговое приложение 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 должно завершить диалог .