Anorflame
Anorflame

Reputation: 394

How to end a dialog mfc application from CDialog::OnInitDialog or immediately after this function ends?

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 intended since the dialog still appeared.

Upvotes: 1

Views: 2036

Answers (3)

Lambert Duran
Lambert Duran

Reputation: 62

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.

Upvotes: 0

Mark Ransom
Mark Ransom

Reputation: 308520

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);

Upvotes: 0

Roman Ryltsov
Roman Ryltsov

Reputation: 69724

PostQuitMessage(0) in the WM_INITDIALOG handler body will do the job.

Upvotes: 1

Related Questions