Re: Dialog Application to Hide
Thanks Joseph. I had already read it and implemented you fix, however, it
will not start up in hidden mode. I did not include the code to Hide &
Restore the app (via menu) but I figured that was obvious. Plus, using the
menu works fine. I can hide the app and by using the menu in the System
Tray Icon, I can Restore (un-hide) the dialog.
Thanks
"Joseph M. Newcomer" <newcomer@flounder.com> wrote in message
news:c0s8961f3q5lbiqk2q744pak012oostuq7@4ax.com...
Read my essay on dialog-based apps on my MVP Tips site; Nish allowed me to
include his
code for hidden-at-startup dialog-based apps.
joe
On Fri, 17 Sep 2010 18:42:07 -0500, "JCO" <someone@somewhere.com> wrote:
VS2008 C++, MFC
I want a dialog type app to be hidden when executed. I've done some
reading
and I think I added all the necessary items to do this, but it still
displays itself when executed. This is what I've done so far. I
understand
that a dialog, by design, will be set to "WM_SHOW" at the end of the
OnInitDialog(), therefore I must call WM_WINDOWPOSCHANGED (based on what
I've read). I can walk through the code and it steps into the
WM_WINDOWPOSCHANGED but I can't tell if the flag changes. Can anybody
help
me. I'm guessing a changes were made to VS2008 that prevents dialogs from
starting up as Hidden.
//.h file
Created a variable:
protected:
BOOL m_bVisible;
public:
BOOL IsVisible(void) { return m_bVisible==true; }
void SetVisible(BOOL b) { m_bVisible = b; }
BOOL GetVisible(void) { return m_bVisible; }
//.cpp file
Constructor:
m_bVisible(FALSE);
//Message Map
BEGIN_MESSAGE_MAP(CMyTrayDlg, CDialog)
ON_REGISTERED_MESSAGE( UWM_TRAY_CALLBACK, OnTrayCallback )
//}}AFX_MSG_MAP
ON_WM_WINDOWPOSCHANGED()
ON_COMMAND(ID_FILE_HIDE, &CMyTrayDlg::OnFileHide)
ON_COMMAND(ID_FILE_RESTORE, &CMyTrayDlg::OnFileRestore)
ON_COMMAND(ID_FILE_EXIT, &CMyTrayDlg::OnFileExit)
END_MESSAGE_MAP()
//handles message WM_WINDOWPOSCHANGED
void CMyTrayDlg::OnWindowPosChanged(WINDOWPOS* lpwndpos)
{
if( !IsVisible() )
lpwndpos->flags &= ~SWP_SHOWWINDOW;
CDialog::OnWindowPosChanged(lpwndpos);
// TODO: Add your message handler code here
}
Joseph M. Newcomer [MVP]
email: newcomer@flounder.com
Web: http://www.flounder.com
MVP Tips: http://www.flounder.com/mvp_tips.htm