Code to View/Hide Status Bar in SDI and MDI Applications

Ever wanted to change the "View/Hide Status Bar"
menue option so that the application (main) window changes it’s
height accordingly preserving the size of the visible client
area?

Here’s a little handler for the OnViewStatusBar message handler
to perform this task. Versions for MFC or Non-MFC available.


//
// OnViewStatusBar handler
//
// increase or decrease app window height to adapt to
// visible or invisible status bar
//

void CMainFrame::OnViewStatusBar() // MFC version
// by Volker Bartheld

{
CControlBar* pBar = GetControlBar(AFX_IDW_STATUS_BAR);

if (pBar != NULL)
{
RECT AppWinRect, BarRect;

GetWindowRect(&AppWinRect);
pBar->GetWindowRect(&BarRect);
int iBarHeight = BarRect.bottom – BarRect.top;

BOOL bShow = (pBar->GetStyle() & WS_VISIBLE) == 0;
ShowControlBar(pBar, bShow, FALSE);
if (bShow)
{
// … increase frame
SetWindowPos(&CWnd::wndNoTopMost,
AppWinRect.top, AppWinRect.left,
AppWinRect.right-AppWinRect.left, AppWinRect.bottom-AppWinRect.top+iBarHeight,
SWP_NOMOVE);
}
else
{
// … decrease frame
SetWindowPos(&CWnd::wndNoTopMost,
AppWinRect.top, AppWinRect.left,
AppWinRect.right-AppWinRect.left, AppWinRect.bottom-AppWinRect.top-iBarHeight,
SWP_NOMOVE);
}
}
}

void CMainFrame::OnViewStatusBar() // non-MFC-version
// by Alexander Sailer

{
// MFC StatusbarHandler aufrufen
OnBarCheck(ID_VIEW_STATUS_BAR);

CControlBar* pBar = NULL;
BOOL bVisible(false);
RECT AppWinRect, BarRect;
int iBarHeight(0);

// get ptr to status bar
pBar = GetControlBar(ID_VIEW_STATUS_BAR);
ASSERT(pBar);

// Abme_ungen holen
GetWindowRect(&AppWinRect);
pBar->GetWindowRect(&BarRect);
iBarHeight = BarRect.bottom – BarRect.top;

// Abfrage ob Bar sichtbar ist
bVisible = pBar->IsVisible();

if (bVisible)// … increase frame
{
SetWindowPos(&CWnd::wndNoTopMost,
AppWinRect.top, AppWinRect.left,
AppWinRect.right-AppWinRect.left,
AppWinRect.bottom-AppWinRect.top+iBarHeight,
SWP_NOMOVE);
}
else // … decrease frame
{
SetWindowPos(&CWnd::wndNoTopMost,
AppWinRect.top, AppWinRect.left,
AppWinRect.right-AppWinRect.left,
AppWinRect.bottom-AppWinRect.top-iBarHeight,
SWP_NOMOVE);
}
}

Downloads

Download source – 1 Kb

More by Author

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read