Link to home
Start Free TrialLog in
Avatar of Wanting2LearnMan
Wanting2LearnManFlag for United Kingdom of Great Britain and Northern Ireland

asked on

Dialog Fullscreen question

I have a windows mobile app writen using MFC in VS2005.  I have made all my dialogs fullscreen using the following:
BOOL CMyClass::OnInitDialog()
{
      SHINITDLGINFO shidi;
      shidi.dwMask = SHIDIM_FLAGS;
      shidi.dwFlags =SHIDIF_FULLSCREENNOMENUBAR;
      shidi.hDlg = m_hWnd;
      ::SHInitDialog(&shidi);
      SetForegroundWindow();
      SHFullScreen( m_hWnd, SHFS_HIDESTARTICON|
      SHFS_HIDETASKBAR|
      SHFS_HIDESIPBUTTON );

      MoveWindow(0,0,240,320,TRUE);

      HWND hWnd;
      hWnd = ::SHFindMenuBar(this->m_hWnd);
      ::ShowWindow(hWnd, SW_HIDE);
}

AND
void COptions::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
{
     CDialog::OnActivate(nState, pWndOther, bMinimized);

     SHFullScreen( m_hWnd, SHFS_HIDESTARTICON|SHFS_HIDETASKBAR|
                                                SHFS_HIDESIPBUTTON );

     MoveWindow(0,0,240,320,TRUE);

     HWND hWnd;
     hWnd = ::SHFindMenuBar(this->m_hWnd);
     ::ShowWindow(hWnd, SW_HIDE);

}

But I am having a problem with one of my dialogs which contains a tab control with 3 tabs.  In each tab I have a seperate dialog and I place each one like so:
//Tab Options
     dlgTab1Dlg = new CTab1(this);
     dlgTab1Dlg->Create(IDD_TAB1_DIALOG, this);
     dlgTab1Dlg->SetParent(&m_tabOptions);
     dlgTab1Dlg->ShowWindow(SW_SHOW);
     dlgTab1Dlg->SetWindowPos(NULL, rTab.left, rTab.top, rTab.Width(), rTab.Height(), SWP_NOZORDER);

     dlgTab2Dlg = new CTab2(this);
     dlgTab2Dlg->Create(IDD_TAB2_DIALOG, this);
     dlgTab2Dlg->SetParent(&m_tabOptions);
     dlgTab2Dlg->ShowWindow(SW_SHOW);
     dlgTab2Dlg->SetWindowPos(NULL, rTab.left, rTab.top, rTab.Width(), rTab.Height(), SWP_NOZORDER);
etc...

I cannot get the dialog which contains these tab dialogs to hide the bottom menu bar.  Why would doing the above affect this??
Avatar of Wanting2LearnMan
Wanting2LearnMan
Flag of United Kingdom of Great Britain and Northern Ireland image

ASKER

If I comment out the lines:
dlgTab1Dlg->Create(IDD_INCLUDE_DIALOG, this);
and
dlgTab2Dlg->Create(IDD_INCLUDE_DIALOG, this);

Then my dialogs are shown fullscreen with the bottom menu bar hidden (The dialogs in the tabs are not shown but this may give a hint as to whats wrong)
I can be wrong here. Also I don't understand - the task is to hide the MS controls and don't see them in the application at all? Or sometimes you need to show them?
How I remember you need to hide MS bars and menus only once in your application, you don't need to do it in each dialog. I don't know remember it will look like if you will open and close them all the time. When you do it (show/hide for the such system controls) you have to redraw your window each time.
In CDialog::OnInitDialog should be a line like:
m_bFullScreen = TRUE;
so just make m_bFullScreen = FALSE in your dialog.
Yes the task is to hide the MS controls and don't see them in the application at all.  I dont want to see them anytime.

I have found that I have to do it in the OnInitDialog AND OnActivate because if you launch a new dialog the menubar will reappear.  The problem I have is strange as the addition of the Tab control with these other dialogs placed inside the tab control seem to not allow me to hide the menubar like I normally do.

Any other ideas?  Thanks
Also, why would I make m_bFullScreen = FALSE ? when I want my dialog to be fullscreen?
ASKER CERTIFIED SOLUTION
Avatar of pgnatyuk
pgnatyuk
Flag of Israel image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial