按钮类CButton
按钮是一个矩形窗口,通常包含一个标题用来说明按钮的作用。CButton按钮控件类是从CWnd继承的。CObject-->CCmdTartget-->CWnd-->CButton.
按钮控件主要有命令按钮Button、单选按钮Radio Button 和复选框Check Box等。
命令按钮Button 用来响应用户的鼠标点击操作;
单选按钮Radio Button 由多个单选按钮组成一组,有选中和未选中两种状态,一组单选按钮是互斥的;
复选框Check Box 一般也有选中和未选中两种状态;
8.5.2 按钮类的主要消息和方法
按钮类控件向父窗口发送的常用通知消息主要是单击消息BN_CLICKED和双击消息BN_DOUBLECLICKED;
CButton类的主要方法:
CheckDlgButton() 设置按钮的状态;
IsDlgButtonChecked() 返回指定复选框或单选按钮的状态
CheckRadioButton() 选择组中的一个单选按钮;
GetCheckedRadioButton() 获得一组单选按钮中被选中按钮的ID
8.6 列表框类CListBox
列表框类CListBox给出了选项清单,用户可以用鼠标选择其中一个或多个条目,但是不能直接编辑列表框的数据。列表框可以自动添加滚动条以查阅所有选项。
列表框可分为单选列表框和多选列表框。CListBox按钮控件类是从CWnd继承的。CObject-->CCmdTartget-->CWnd-->CListBox.
8.6.1 CListBox类的方法:
1)通用方法
GetCount() 获得列表框中列表项数目
GetSel() 确定列表框中的选择状态
SetSel() 选择或取消选择指定的列表项
GetText() 把列表框中的字符串复制到缓冲区
GetTextLen() 返回列表框字符串的长度(按字节)
...
2)单选列表框的方法
列表框的默认模式是单选项模式;所有的通用方法均适用于单选项列表框。
只有两个类方法专门处理单选项列表框:
GetCurSel() 获得当前选择列表框的下标(基于0)
SetCurSel() 选择列表框字符串
3)多选列表框的方法
多选项列表框扩展了标准单项选择列表框的能力,可以解决在一个列表框中选择多项带来的复杂性。
GetAnchorIndex() 获得多项选择列表框中当前定位项的下标
...
4)特殊字符串方法
适用于单选和多选两种模式的列表框,这些方法处理列表框中的字符串项。
AddString() 在列表框中加入一个字符串
InsertString() 在列表框指定下标处插入一字符串
...
8.6.2 创建和初始化列表框对象
两种创建方法:
a.利用工具箱的列表框控件直接创建,然后添加控件变量使用;
b.通过CListBox类的Create成员函数创建;
设计过程中,同一组单选按钮必须一个接一个的放进对话框中,中间不能插入其他的控件;(原因:VS按照放入对话框中的先后顺序,给每个控件赋一个ID值,所以控件的ID是连续的)
对于成组的单选按钮,只在每组的第一个按钮的属性中选中Group设置(group属性的控件之间的控件为一组)
应用程序的代码编程部分:
a.给各个控件连接变量;
b.与有关按钮控件的连接方法;
c.方法的实现;
d.初始化单选按钮;
8.7 对话框通用控件
大部分控件都是在对话框中使用的,无论是基于对话框的应用程序还是Doc/View结构的应用程序,控件通常是放在对话框中的。包括:
1.Picture控件; 2.Slider控件; 3.Progress控件; 4.Spin控件
8.7.1 Picture控件
(1)分隔线
将Picture控件拖放在对话框中,[Type]属性选择“Frame",[Color]属性选择"Etched”,将控件拖到最细,此时Picture控件就像一条分隔线。
(2)图片
将[Type]属性设置为"Icon"或者"Bitmap",设置[Image]属性为相应的资源ID,显示图标或者位图;在资源中导入一位图,命名为IDB_BITMAO_DOT;
为Picture控件添加变量CStatic m_picture1;在对话框中增加“开始”按钮,添加“事件处理程序”
8.7.2 Slider控件的使用
滑块控件可使用户通过拖动滑块快速获得指定的数据。当用户滑动滑块时,控件将发送消息来指示变化。滑块控件适用于选择一系列离散值或一段连续范围。
8.7.3 Progress控件
进度控件用来指示长时间操作的进展程度。包括从左到右使用系统高亮颜色显示渐进过程的矩形。
MFC中表示进度控制的是CProgressCtrl类。进度条有一个范围和当前位置,范围表示整个操作的持续时间,当前位置表示当前进行的位置,进度条根据当前位置来判断进行的百分比,并显示进度。
CProgressCtrl类常用成员:
CProgressCtrl 构造CProgressCtrl对象
Create 创造进度条对象;
SetPos 设置当前位置;
GetPos 获取当前位置;
SetRange 设置取值范围;
SetStep 设置步长;
Steplt 前进一步;
添加一个Progress控件,保持默认ID,设置Smooth属性。在旁边添加一个按钮,设置ID为“IDC_BUTTON_START”,Cation为开始。
在OnInitDialog中添加代码:...;为“计时”按钮添加点击事件实现代码:...
添加WM_TIMER消息:
a.在类视图中选择相应的类Dlg;
b.在属性对话框中选消息按钮;
c.下拉找到WM_TIMER;
d.右边下拉列表框选择添加
在COtherCtrlDlg中添加对WM_TIMER消息的响应函数:...
8.7.4 Spin控件
Spin按钮控件提供了一对箭头,用户通过点击箭头可以微调该控件所表示的数值。
标识Spin控件的是CSpinButtonCtrl类,Spin控件通常和taborder位于它之前的控件成对使用。通过CSpinButtonCtrl的GetBuddy方法可获得与之配对的控件。
在对话框中拖放一个Edit控件,设为只读,然后拖放一个Spin控件紧挨着刚才的Edit控件,两个控件的ID都使用默认值,设置Spin控件的[Allignment]属性为Right,选中Auto buddy属性。
在对话框中添加WM_VSCROLL消息(SPIN控件上下滚动消息)的响应;
MFC学习笔记--按钮、列表框、对话框控件
最新推荐文章于 2021-11-12 09:56:31 发布