
Hide dialog based app on startup
Quote:
>Can anyone tell me how you hide a dialog based app as soon as it starts?
Tim,
If you want the dialog to appear initially hidden here's a couple of
possibilities I've seen posted before:
Method 1
--------
Add a "visible" flag to the dialog class and initialize it to
FALSE in the constructor.
Add a handler for OnWindowPosChanging.
void CTestDlg::OnWindowPosChanging( WINDOWPOS* lpwndpos )
{
if ( !m_bVisible )
lpwndpos->flags &= ~SWP_SHOWWINDOW ;
CDialog::OnWindowPosChanging(lpwndpos);
}
Add a function to show/hide the app.
void CTestDlg::DisplayWindow( BOOL bShow )
{
if ( bShow )
{
m_bVisible = TRUE;
ShowWindow( SW_SHOWNORMAL );
}
else
{
m_bVisible = FALSE;
ShowWindow( SW_HIDE );
}
}
Method 2
--------
Post a user defined message in OnInitDialog, and position the dialog
off-screen. In the processing of the user defined message hide the
window, and when you want to display it you can reposition
it and show it. Here's the general idea:
BEGIN_MESSAGE_MAP(CMindlgDlg, CDialog)
//{{AFX_MSG_MAP(CMindlgDlg)
...
//}}AFX_MSG_MAP
ON_MESSAGE( WM_APP+1, OnAppMsg )
END_MESSAGE_MAP()
BOOL CMindlgDlg::OnInitDialog()
{
...
// TODO: Add extra initialization here
SetWindowPos( NULL, -1000, -1000, 0, 0,
SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE );
PostMessage( WM_APP+1 );
return TRUE;
Quote:
}
LRESULT CMindlgDlg::OnAppMsg(WPARAM, LPARAM)
{
ShowWindow( SW_HIDE );
return 0;
Quote:
}
Dave
--
MVP VC++ FAQ: http://www.mvps.org/vcfaq
My address is altered to discourage junk mail.
Please post responses to the newsgroup thread,
there's no need for follow-up email copies.