Visual Studio 6Visual C++ 7.0Windows 2000Visual C++ 6.0Windows XPMFCIntermediateDevVisual StudioWindowsC++
Toolbar & StatusBar on Dialog






3.50/5 (13 votes)
Aug 3, 2002

124472

4173
Toolbar / Statusbar on Dialog Window
What's New
Carried out some changes as suggested by Russ Freeman. The Changes are as follows
- Moved all string in code to String Table
- Delete unwanted sub-class files
CStatusBar
- Added menu to generate 3 types of ToolBars
- Retained Old Toolbar as is
- New Toolbars use Arrays
- Added Date & Time on the Statusbar
- Added message Maps for new Toolbars
Introduction
This Article demonstrates the technique of creating Toolbar and StatusBar on a Dialog Window.
To acheive the goal you create a Dialog-based project from the New Project Wizard, a blank form with Ok and Cancel buttons is created by default.
Delete the buttons since you will most probably be making the project menu-driven.
// // First we create the ImageList for use with the ToolBar // in following manner CWinApp* pApp = AfxGetApp(); mImageList->Create(24, 24, ILC_COLOR8 | ILC_MASK, 9, 9); mImageList->Add(pApp->LoadIcon(IDI_HELP)); mImageList->Add(pApp->LoadIcon(IDI_BOLD)); mImageList->Add(pApp->LoadIcon(IDI_DRAWING)); mImageList->Add(pApp->LoadIcon(IDI_STRIKEOUT)); // // next we create the Toolbar // TBBUTTON tb; m_ToolBar.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TBSTYLE_FLAT, CRect(0,0,0,0), this, 0); m_ToolBar.SetImageList(&m_pImageList); // Set ImageList for this Toolbar created // in the previous section tb.iBitmap = 0; tb.iString = NULL; tb.fsState = TBSTATE_ENABLED; tb.fsStyle = TBSTYLE_BUTTON; tb.idCommand = ID_HELP_ABOUT; m_ToolBar.AddButtons(1, &tb); tb.iBitmap = 1; tb.idCommand = ID_BOLD; m_ToolBar.AddButtons(1, &tb); tb.iBitmap = 2; tb.idCommand = ID_DRAWING; m_ToolBar.AddButtons(1, &tb); TBBUTTON tb1; tb1.fsStyle = TBSTYLE_SEP; m_ToolBar.AddButtons(1, &tb1); tb.iBitmap = 3; tb.idCommand = ID_STRIKEOUT; tb.iString = NULL; m_ToolBar.AddButtons(1, &tb); // // We now Create the Statusbar as show below // m_StatusBar.Create(WS_CHILD|WS_VISIBLE|SBT_OWNERDRAW, CRect(0,0,0,0), this, 0); // You can set the no. of parts of the StatusBar (4 in this case) // and the width of each part not -1 means remaining width int strPartDim[4]= {180, 260, 340, -1}; m_StatusBar.SetParts(4, strPartDim); m_StatusBar.SetText(_T("Dialog / StatusBar / Toolbar"),0,0); m_StatusBar.SetText(_T("Example"), 1, 0); CString string; string.LoadString(IDS_MYCOMPUTER); m_StatusBar.SetText(string, 3 ,SBT_NOBORDERS ); m_StatusBar.SetIcon(3, SetIcon(AfxGetApp()->LoadIcon(IDI_COMP), FALSE));