| | | 托管C++程序开发Win表单的文档程序设计(上) | | 2002-04-27·
·adding··yesky
| 上一页 1 2 3 二、工具栏和状态栏
工具栏(ToolBar)和状态栏(StatusBar)是Windows Forms两个控件,但它的构造方法和事件的处理与其他普通控件有所不同。下面分别加以讨论。
1、使用工具栏的一般步骤
在Windows Forms中使用工具栏通常遵循下列过程:
(1) 创建一个ToolBar对象,如:
| Toolbar *m_pToolBar = new ToolBar(); | (2) 由于工具栏上的按钮通常都会有相应的图像,因而要先构造由按钮图像组成的图像列表,并设置ToolBar对象的ImageList属性。例如下面的代码:
m_pImageList = new ImageList(); m_pImageList->ImageSize = System::Drawing::Size(16, 16); m_pImageList->TransparentColor = System::Drawing::Color::Transparent; m_pImageList->Images->Add(Image::FromFile(S"new.bmp")); m_pImageList->Images->Add(Image::FromFile(S"open.bmp")); m_pImageList->Images->Add(Image::FromFile(S"help.bmp"));
m_pToolBar = new ToolBar(); m_pToolBar->ImageList = m_pImageList; | (3) 向工具栏添加按钮,例如下面的代码是添加一个“新建”按钮:
m_pNewButton = new ToolBarButton(); m_pNewButton->ImageIndex = 0; m_pNewButton->ToolTipText = S"新建"; m_pNewButton->Text = S"新建"; // 设置按钮文本
m_pToolBar->Buttons->Add(m_pNewButton); | (4) 设置工具栏属性,这些属性通常包括:外观(Appearance)、边框(BorderStyle)、下拉箭头(DropDownArrows)和文本放置(TextAlign)等。例如下面的代码:
m_pToolBar->Appearance = ToolBarAppearance::Flat; // 平面按钮 m_pToolBar->BorderStyle = BorderStyle::Fixed3D; // 3D外观 m_pToolBar->DropDownArrows = true; // 允许按钮有下拉箭头 m_pToolBar->TextAlign = ToolBarTextAlign::Underneath; // 按包钮文本处于图像下面 m_pToolBar->Divider = false; // 栏与栏之间不允许有分隔线 | (5) 处理工具栏事件
工具栏包含两个常用的事件:ButtonClick和ButtonDropDown事件。前者是当用户单击工具栏按钮时产生时,而后者是当用户单击按钮旁边的下拉箭头时产生的。这两个事件的映射都是通过ToolBarButtonClickEventHandler来进行的。例如下面的代码框架:
m_pToolBar->ButtonClick += new ToolBarButtonClickEventHandler(this,&WinForm::OnToolButtonClick); ... void OnToolButtonClick( Object* sender, ToolBarButtonClickEventArgs* e) { switch (m_pToolBar->Buttons->IndexOf(e->Button)) { case 0: // 当第一个工具按钮按下时 break; case 1: // 当第二个工具按钮按下时 break; ... default: break; } }
| 2、使用状态栏的一般步骤
在Windows Forms中使用状态栏要比工具栏简单,具体步骤如下:
(1) 创建一个StatusBar对象,如:
| StatusBar *m_pStatusBar = new StatusBar(); | (2) 为状态栏添加窗格
例如下列代码:
m_pSBPanel1 = new StatusBarPanel(); m_pSBPanel1->Text = S"就绪"; m_pSBPanel1->BorderStyle = StatusBarPanelBorderStyle::None; m_pSBPanel1->AutoSize = StatusBarPanelAutoSize::Spring;
m_pStatusBar->Panels->Add(m_pSBPanel1);
m_pSBPanel2 = new StatusBarPanel(); m_pSBPanel2->Text = S"另外一个窗格"; m_pSBPanel2->AutoSize = StatusBarPanelAutoSize::Spring;
m_pStatusBar->Panels->Add(m_pSBPanel2); | (3) 设置状态栏属性并添加到窗口的Controls集合中
m_pStatusBar->ShowPanels = true; // 显示所有的窗格 Controls->Add(m_pStatusBar);
| 需要说明的是,状态栏也有相应的事件,如PanelClick(用户单击状态栏的窗格)等,但这些事件一般很少用到。
三、综合示例
这里给出一个菜单栏、工具栏和状态栏的综合示例程序,其结果如图2所示。
上一页 1 2 3 | | | 感谢
访问天极网,如果您觉得该文章涉及版权问题,请看这里!
|
|