![]() |
![]() |
![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
To access the contents, click the chapter and section titles.
Fast Track Visual C++ 6.0 Programming
Our combo box is created and connected to the toolbar. At this point, then, we can fill it with the items we needCircle, Rectangle, and Rounded Rectangleusing the CComboBoxs AddString() function. m_wndToolBar.SetButtonInfo(0, IDC_COMBO, TBBS_SEPARATOR, 150); m_wndToolBar.SetButtonInfo(1, ID_SEPARATOR, TBBS_SEPARATOR, 20); CRect rCombo; m_wndToolBar.GetItemRect(0, &rCombo); rCombo.bottom += 100; m_wndToolBar.m_Combo.Create(CBS_DROPDOWNLIST | WS_VISIBLE, rCombo, &m_wndToolBar, IDC_COMBO); CString Item; ⇐ Item = Circle; ⇐
m_wndToolBar.m_Combo.AddString(Item);⇐ Item = Rectangle; ⇐ m_wndToolBar.m_Combo.AddString(Item); ⇐ Item = Rounded Rectangle; ⇐ m_wndToolBar.m_Combo.AddString(Item); ⇐ . . . Now that weve added the combo box, we need to add the drawing tool that is used with the toolbar. Adding Tools to the ToolbarWe add tools to the toolbar with the Toolbar Editor. To open that editor, double-click the IDR_MAINFRAME item in the Toolbar folder in the ResourceView. This opens the Toolbar Editor, as shown in Figure 4.11. You can move the tools in the toolbar simply by dragging them with the mouse. Move the new, empty tool into position just before the Help button in the toolbar and click it to open. We simply draw an arrow cursor in that button now, as also shown in Figure 4.11. Give this new tool the ID ID_DRAW by double-clicking it in the Toolbar Editor and entering ID_DRAW in its property page. Then, using ClassWizard, connect that ID to a new function, OnDrawFigure(). We cant use OnDraw()because its already taken. void CComboView::OnDrawFigure() { // TODO: Add your command handler code here } The program calls this function when were supposed to draw a figure. To determine which figure were supposed to draw, we need to determine what item is selected in the combo box: Circle, Rectangle, or Rounded Rectangle. We can get that information from the main frame objects GetItemNumber() function that weve added to that object. We place the number of the currently selected item in the combo box into a new member variable, m_FigureType, then we invalidate the view to display the figure. void CComboView::OnDrawFigure() { m_FigureType = ((CMainFrame*) GetParent())->GetItemNumber();⇐ Invalidate(); ⇐ } We complete the drawing process in OnDraw(), depending on the value in m_FigureType. void CComboView::OnDraw(CDC* pDC) { CComboDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); switch(m_FigureType){ ⇐ case 0: ⇐ pDC->Ellipse(200, 50, 400, 250); ⇐ break; ⇐ case 1: ⇐ pDC->Rectangle(200, 50, 400, 250); ⇐ break; ⇐ case 2: ⇐ pDC->RoundRect(200, 50, 400, 250, 20, 20); ⇐ break; ⇐ } ⇐ }
When you run the program, as shown in Figure 4.12, you can see that our combo box appears in the toolbar and we can select items in it. In fact, we can even detach the toolbar using the mouse and move it around. When you move the toolbar back to its original position, it docksor repositions itselfthere, rejoining the border of the window. When the user selects a figure to draw and clicks the drawing tool, that figure appears in the window, as shown in Figure 4.12. Our combo program is a success so farnow were using combo boxes in dockable toolbars. Visual C++ also supports Internet Explorer-style rebars, which we look at next. Using RebarsRebars toolbars typically contain other toolbars in bands that you can slide and adjust using gripper handles, just like the ones you see in Internet Explorer. You can specify that your program use rebars in Step 4 of the AppWizard; if you do, the rebar control will be m_wndReBar. After youve added your controls to the toolbar as weve just done, you insert that toolbar into the rebar, place that toolbar into a REBARBANDINFO structure, and call the rebars InsertBand() function to insert the toolbar into a band in the rebar. REBARBANDINFO rbi; rbi.cbSize= sizeof(REBARBANDINFO); rbi.fMask= RBBIM_BACKGROUND | RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_STYLE | RBBIM_TEXT; rbi.fStyle= RBBS_GRIPPERALWAYS; rbi.cxMinChild= 300; rbi.cyMinChild= 30; rbi.lpText= Band #1; rbi.cch= 7; rbi.cx= 300; rbi.hbmBack= (HBITMAP)m_bmap; rbi.hwndChild= (HWND)m_wndToolBar; m_wndReBar.InsertBand(-1, &rbi); We continue by working with status bars. Using Status BarsThe status bar is the bar that appears at the bottom of a windowed program, and it has several functions. One of the main functions of a status bar is to display the programs status.
Setting a Status Bars TextHere we set the status bars text to OK. To do that, we use the main frame windows member object m_wndStatusBar. This object has a function, GetStatusBarCtrl(), that returns the status bar control that all status bars are built on. We can use that controls SetText() function to set the text in the status bar like this: m_wndStatusBar.GetStatusBarCtrl().SetText(OK, 0, 0); Although we are able to set the text in the status bar ourselves, the program sets the status text itself under certain circumstances, and we take a look at that next. Adding Tooltips and Status Bar PromptsWhen the user lets the mouse cursor rest over a toolbar button, a prompt explaining that button appears in the toolbar and a tooltip appears as a small yellow window next to the toolbar button. Lets add a status bar prompt and a tooltip to our new toolbar button. We gave that button the ID ID_DRAW, so we use the String Editor to give that ID a new caption: Draw a figure\nDraw a figure. The first string becomes the status bar prompt, and the second (after the \n) string becomes the tooltip (these strings need not be the same). Now, were supporting status bar prompts and tooltips, as shown in Figure 4.13. The last topic covered in this chapter is the use of status bar indicators. Status bar indicators are the small boxes you see at the right of the status bar that indicate such things as whether capslock or overstrike mode are on.
|
![]() |
Products | Contact Us | About Us | Privacy | Ad Info | Home
Use of this site is subject to certain Terms & Conditions, Copyright © 1996-2000 EarthWeb Inc. All rights reserved. Reproduction whole or in part in any form or medium without express written permission of EarthWeb is prohibited. Read EarthWeb's privacy statement. |