Have you ever tried to minimize a dialog during the startup of a dialog based application? The problem is that in a dialog based application, we will not get the control after the dialog is completely created. Even a call to ShowWindow()
from the OnInitDialog()
function will not work. So what will we do if we have such a requirement? Well I got a simple technique for doing this by modifying the InitInstance()
function of the app class.
The code for creating a dialog in the InitInstance()
function will look like this:
CDialogBasedDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
My idea is to change this code a little as follows:
CDialogBasedDlg dlg;
if(dlg.Create( CDialogBasedDlg::IDD ))
{
dlg.ShowWindow( SW_HIDE );
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.RunModalLoop();
}
Actually inside the MFC Framework, the DoModal()
function calls the CreateDlgIndirect()
and then RunModalLoop()
. It also handles the tasks such as disabling the parent window etc. In our case, the dialog itself is the parent window so we don't have to worry about such things.