In one case of my application, I want to end the application in the dialog's OnInitDialog or immediately after this function. Is there any way to do it?
I tried using windows messages – in OnInitDialog calling SendMessage and in the handler of the sent message calling OnClose – but it didn't do what I intende开发者_如何学God since the dialog still appeared.
PostQuitMessage(0)
in the WM_INITDIALOG
handler body will do the job.
You can simulate the user clicking the X
in the corner of the dialog by sending a WM_SYSCOMMAND
message:
PostMessage(WM_SYSCOMMAND, SC_CLOSE, 0);
The easiest solution:
CMyDialog::OnInitDialog()
{
if( "My Condition is invalid" )
{
EndDialog(-1);
return FALSE;
}
}
You have to do "return FALSE" juste after EndDialog because as you can read in the Microsoft documentation CDialog(classe), EndDialog doesn't close the dialog immediately, but generates a notification which when handled by Microsoft has to effect to end the dialog.
精彩评论