第9章Windows 标准控件在可视化编
程中的应用
控件是Windows 图形用户界面的主要组成部分之一,用户通过操作控件对象完成与应用程序之间的交互。控件的使用集中体现了Windows 系统面向对象的特点
9.1概述
控件工
具栏
控件接受的消息主要有单击、双击和字符输入等
9.2 按钮控件及其应用
按钮控件普通按钮圆按钮
复选框按钮组框按钮
自绘按钮
9.2.1 按钮控件的创建过程CButton类的成员函数Create负责创建按钮控件,该函数的声明为:
BOOL Create
( LPCTSTR lpszCaption, //指定了按钮显示的正文DWORD dwStyle, //按钮的风格
const RECT& rect, //按钮的位置和大小CWnd* pParentWnd, //指向父窗口,UINT nID//按钮的ID
)
按钮控件消息:
ON_BN_CLICKED ON_BN_DBLCLICKED ON_COMMAND 两个类似
按钮是最常见的控件之一复选框
单选按钮
下压式按钮
分组框
常用于只有两种
完全相反状态
的情况下
适用于同一组属性相
同的数据中选一个数据
适用于消息的发送
没有太多的操作
只是在窗口中划
分区域范围
GetCheck( )SetCheck()GetBitmap()SetBitmap()GetButtonStyle()SetButtonStyle()GetCursor()
SetCursor()
GetIcon()
SetIcon()
GetState()
SetState()CButton
类的成
员函数在知道按钮ID 的前提下,还可使用与按钮有关的CWnd 成员函数来设置或查询按钮状态CheckDlgButton CheckRadioButton GetCheckedRadioButton IsDlgButtonChecked GetWindowText GetWindowTextLength SetWindowText
MFC还提供了一个CBitmapButton的类,允许用户以图标的方式显示按钮,它是
在CButton下派生的
自定义
按钮MFC调用方法DrawItem()在按钮上绘制位图,LoadBitmaps()方法为一个CBitmapButton对象附上位图,最多可以有4个位图
9.2.2 按钮控件示例
IDC_BUTTON1IDC_BUTTON2IDC_RADIO1IDC_RADIO2IDC_CHECK1IDC_CHECK2Group
属性
Auto
属性主要步骤:
1.创建基于对话框项目
2.设置按钮的属性
3. 添加成员变量并添加消息响应函数
auto风格控
件不必添加
成员变量
void CMy9_1Dlg::OnButton1()
{m_btn1.SetWindowText(“你已按下了按钮!”);}
void CMy9_1Dlg::OnButton2()
{m_btn2.SetWindowText(“按钮已被按下!”);} void CMy9_1Dlg::OnCheck1()
{if(m_chk1.GetCheck()>0)m_chk1.SetCheck(0);
else m_chk1.SetCheck(1);}void CMy9_1Dlg::OnRadio1()
{m_rad1.SetCheck(1);}
9.3 滚动条控件
滚动条是一个交互式的、高度可视化的控件它包括一个滑块、滚动条的两端的按钮等。滚动条控件与属于窗口的滚动条是不一样的处于窗口的滚动条是由该窗口创建、管理
和释放的滚动条控件是由
用户创建、管理
和释放的
9.3.1 滚动条类的结构及其方法
滚动条可以通过通知代
码来创建,也可以用对
话框资源模板来创建
CScrollBar类的方法
方法说明
EnableScrollBar() 使滚动条的一个或两个箭头有效或无效
GetScrollInfo() 获得滚动条的消息
GetScrollLimit() 获得滚动条的范围
GetScrollPos() 获得滚动条当前的位置
GetScrollRange() 获得制定滚动条的当前最大和最小滚动位置
SetScrollInfo() 设置滚动条的消息
SetScrollPos() 设置滚动块当前的位置
SetScrollRange() 设置制定滚动条的最大和最小滚动位置
常用滚动条动作标识及其说明
SB_TOP/SB_BOTTOM:滚动到滚动条最顶/底端SB_LINEUP/SB_LINEDOWN:向上/下滚动一行
SB_LEFT/SB_RIGHT:滚动到左/右边
SB_LINELEFT/SB_LINERIGHT:向左/右滚动一行SB_PAGEUP/SB_PAGEDOWN:向上/下滚动一页SB_PAGELEFT/SB_PAGERIGHT:向左/右滚动一页SB_THUMBPOSITION:滑块移动到新位置
SB_THUMBTRACK:滑块被拖动
SB_ENDSCROLL:滚动到最终位置
9.3.2 创建与初始化滚动条类
创建CScrollBar 对象的一般步骤(1) 用C++关键字new和构造函数
CScrollBar::CScrollBar()为一个
ScrollBar对象分配一个实例
(2) 初始化CScrollBar对象,将一
个Windows滚动条赋予它,并用
CScroll::Create()方法设置参数
和样式
分配一个滚动条控件对象并返回指向该对象的指针CScrollBar::pMyScroll=new CScrollBar
调用CScrollBar::Create()方法初始化指针
BOOL Create(DWORD dwStyle,const RECT& rect,CWnd *pParentWnd,UINT nID);
滚动条窗表示控件的指向控件所属父窗口与滚动
在设置滚动条控件时,要通过如下方法设置其范围CScrollBar::SetScrollRange()
例如,设置滚动范围为-100到100的垂直滚动条pMyScroll->SetScrollRange(SB_VERT,-100,100);
通过SetScrollPos()设置滑块当前位置
例如,滑块的位置在-100到100的中间,即为0的位置
pMyScroll->SetScrollPos(0);
【例9-2】滚动条类编程实例
标题为Application of ScrollBar 滚动条的滚
动范围设为
0到20单击滑块与箭头之间的区域。滑块上移或下移三格,编辑框中的数字加3或减3
单击向上或向下的
箭头,滑块向上或向下移动一格,编辑框中的数字加1按住滑块上下拖动。编辑框
单击Up按钮,滑块移到最上边,编辑框的数字变为0
单击Down按钮,滑块移到最下边,编辑框的数单击Reset按钮,滑块移到中间,编辑框的数字变为10
单击Exit按
钮,退出应
用程序
(1) 应用程序的可视化编程部分
对话框中各个对象的属性
对象ID
滚动条IDC_SCROLLBAR
编辑框IDC_EDIT1
Up按钮IDC_UP_BUTTON
Down按钮IDC_DOWN_BUTTON
Reset按钮IDC_RESET_BUTTON
Exit按钮IDC_EXIT_BUTTON
(2) 应用程序的代码编程部分
(a) 给滚动条连接变量
ID变量名类别类型IDC_SCROLLBAR m_Scrollbar Control CScrollbar IDC_EDITl m_Edit Control CEdit