友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
VC语言6.0程序设计从入门到精通-第25部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
该函数用于指定滚动条的滚动范围。参数 nMinPos 和 nMaxPos 分别指定了滚动范围的最
小、最大值,由这两者指定的滚动范围不得超过 32767 。当两者都为 0 时,滚动条将被隐藏。
参数 bRedraw 表示是否需要重绘滚动条,如果为 TRUE,则重绘之。
5 .GetScrollInfo()函数
该成员函数声明如下:
·109 ·
…………………………………………………………Page 119……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
BOOL GetScrollInfo(LPSCROLLINFO lpScrollInfo;UINT nMask);
该函数用来获取滚动条的各种状态,包括滚动范围、滚动框的位置和页尺寸,参数
lpScrollInfo 指向一个 SCROLLINFO 结构,该结构定义如下:
typedef struct tagSCROLLINFO {
UINT cbSize;
//结构的尺寸(字节为单位)
UINT fMask;
//说明结构中的哪些参数是有效的,可以是屏蔽值的组合;如 SIF_POS|SIF_PAGE,若为 SIF_ALL
则整个结构都有效
int nMin;
//滚动范围最大值,当 fMask 中包含 SIF_RANGE 时有效
int nMax;
//滚动范围最小值,当 fMask 中包含 SIF_RANGE 时有效
UINT nPage;
//页尺寸,用来确定比例滚动框的大小,当 fMask 中包含 SIF_PAGE 时有效
int nPos;
//滚动框的位置,当 fMask 中包含 SIF_POS 有效
int nTrackPos;
//滚动时滚动框的位置,当 fMask 中包含 SIF_TRACKPOS 时有效,该参数只能查询,不能设置,
最好不要用该参数来查询拖动时滚动框的位置
}SCROLLINFO;
typedef SCROLLINFO FAR *LPSCROLLINFO;
参数 nMask 的意义与 SCROLLINFO 结构中的 fMask 相同,函数在获得有效值后返回
TRUE,否则返回 FALSE 。
6 .SetScrollInfo()函数
该成员函数声明如下:
BOOL SetScrollInfo(LPSCROLLINFO lpScrollInfo;BOOL bRedraw = TRUE);
该函数用于设置滚动条的各种状态,如设定页尺寸从而实现比例滚动框。参数lpScrollInfo
指向一个 SCROLLINFO 结构,参数 bRedraw 表示是否需要重绘滚动条,如果为 TRUE,则
重绘之。若操作成功,该函数返回 TRUE,否则返回 FALSE 。
CWnd 类也提供了一些函数来查询和设置所属的标准滚动条。这些函数与 CScrollBar 类
的函数同名,且功能相同,但每个函数都多了一个参数,用来选择滚动条。
7 .GetScrollPos()函数
该成员函数声明如下:
int GetScrollPos(int nBar) const;
参数 nBar 用来选择滚动条,可以为下列值。
o SB_HORZ:指定水平滚动条。
o SB_VERT:指定垂直滚动条。
·110 ·
…………………………………………………………Page 120……………………………………………………………
第 5 章 常用控件
8.OnHScroll()和 OnVScroll()函数
无论是标准滚动条,还是滚动条控件,滚动条的通知消息都是用 WM_HSCROLL 和
WM_VSCROLL 消息发送出去的 。对这两个消息的默认处理函数是 CWnd::OnHScroll 和
CWnd::OnVScroll,一般需要在派生类中对这两个函数从新设计,以实现滚动功能。这两个函
数的声明如下:
afx_msg void OnHScroll(UINT nSBCode;UINT nPos;CScrollBar* pScrollBar);
afx_msg void OnVScroll(UINT nSBCode;UINT nPos;CScrollBar* pScrollBar);
参数 nSBCode 是通知消息码,主要通知码如表 5…7 所示。nPos 是滚动框的位置,只有在
nSBCode 为 SB_THUMBPOSITION 或 SB_THUMBTRACK 时,该参数才有意义。如果通知
消息是滚动条控件发来的,那么 pScrollBar 是指向该控件的指针,如果是标准滚动条发来的,
则 pScrollBar 为 NULL 。
表 5…7 通知消息码
消息 含义
SB_BOTTOM/SB_RIGHT 滚动到底端(右端)
SB_TOP/SB_LEFT 滚动到顶端(左端)
SB_LINEDOWN/SB_LINERIGHT 向下(向右)滚动一行(列)
SB_LINEUP/SB_LINELEFT 向上(向左)滚动一行(列)
SB_PAGEDOWN/SB_PAGERIGHT 向下(向右)滚动一页
SB_PAGEUP/SB_PAGELEFT 向上(向左)滚动一页
SB_THUMBPOSITION 滚动到指定位置
SB_THUMBTRACK 滚动框被拖动。可利用该消息来跟踪对滚动框的拖动
SB_ENDSCROLL 滚动结束
5。4 按钮(Button、Radio Box、Check Box、Group Box )控件
5。4。1 按钮控件的使用
按钮也是一种传统控件。按钮控件包括命令按钮(Pushbutton )、检查框(Check Box )、
单选按钮(Radio Button )、组框(Group Box )和自绘式按钮(Owner…draw Button )。命令按
钮的作用是对鼠标的单击作出反应并触发相应的事件,在按钮中既可以显示文本,也可以显
示位图。选择框控件作为一种选择标记,可以有选中、不选中和不确定 3 种状态。单选按钮
控件一般都是成组出现的,具有互斥的性质,即同组单选按钮中只能有一个是被选中的。组
框用来将相关的一些控件聚成一组。自绘式按钮是指由程序而不是系统负责重绘的按钮。
选择框和单选按钮是一种特殊的按钮,它们有选择和未选择两种状态。当一个选择框处
于选择状态时,选择框的小方框内会出现一个“√”,当单选按钮处于选择状态时,会在圆圈
中显示一个黑色实心圆。此外,检查框还有一种不确定状态,这时检查框呈灰色显示,不能
接受用户的输入,以表明控件是无效的或无意义的。按钮控件会向父窗口发出控件通知消息,
主要的通知消息如表 5…8 所示的。
·111 ·
…………………………………………………………Page 121……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
表 5…8 按钮控件的通知消息
消息 含义
BN_CLICKED 用户在按钮上单击了鼠标
BN_DOUBLECLICKED 用户在按钮上双击了鼠标
按钮控件封装在 MFC 的 CButton 类中,CButton 类的成员函数 Create 用于创建按钮控件,
该函数的声明如下:
BOOL Create(LPCTSTR lpszCaption;DWORD dwStyle;const RECT& rect;CWnd* pParentWnd;UINT nID);
参数 lpszCaption 指定了按钮显示的文本。dwStyle 指定了按钮的风格,主要的按钮风格
如表 5…9 所示,dwStyle 参数可以是这些风格的组合。rect 说明了按钮的位置和尺寸。
pParentWnd 指向父窗口,该参数不能为 NULL 。nID 是按钮的 ID 。如果创建成功,该函数返
回 TRUE,否则返回 FALSE 。
表 5…9 按钮的风格
消息 含义
BS_AUTOCHECKBOX 同 BS_CHECKBOX ,不过单击鼠标时按钮会自动反转
BS_AUTORADIOBUTTON 同 BS_RADIOBUTTON ,不过单击鼠标时按钮会自动反转
BS_AUTO3STATE 同 BS_3STATE ,不过单击按钮时会改变状态
BS_CHECKBOX 指定在矩形按钮右侧带有标题的选择框
指定默认的命令按钮,这种按钮的周围有一个黑框,用户可以按回车
BS_DEFPUSHBUTTON
键来快速选择该按钮
BS_GROUPBOX 指定一个组框
BS_LEFTTEXT 使控件的标题显示在按钮的左边
BS_OWNERDRAW 指定一个自绘式按钮
BS_PUSHBUTTON 指定一个命令按钮
BS_RADIOBUTTON 指定一个单选按钮,在圆按钮的右边显示正文
BS_3STATE 同 BS_CHECKBOX ,不过控件有 3 种状态—选择、未选择和变灰
除了上表中的风格外,一般还要为控件指定 WS_CHILD 、WS_VISIBLE 和 WS_TABSTOP
等窗口风格,WS_TABSTOP 风格使控件具有 Tabstop 属性。创建一个普通按钮应指定的风格
为 WS_CHILD|WS_VISIBLE|WS_TABSTOP 。 创 建 一 个 普 通 检 查 框 可 以 指 定 风 格 为
WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX 。创建组中第一个单选按钮
指定风格 WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_GROUP|BS_AUTORADIOBUTTON ,
组中其他单选按钮指定风格时则不应该包括 WS_TABSTOP 和 WS_GROUP 。
对于用对话框模板编辑器创建的按钮控件,可以在控件的属性对话框中指定表 5…8 中列
出的控件风格。例如,在命令按钮的属性对话框中选择 Default button ,相当于指定了
BS_DEFPUSHBUTTON 。
5。4。2 Cbutton 类的主要成员函数
下面介绍 CButton 类的主要的成员函数,这些成员函数在实际编程过程中有很大的用处。
1.GetState()函数
该成员函数声明如下:
UINT GetState() const;
该函数返回按钮控件的各种状态。可以用下列屏蔽值与函数的返回值相与,以获得各种
·112 ·
…………………………………………………………Page 122……………………………………………………………
第 5 章 常用控件
信息。返回值的状态主要定义有下面几种。
o 0x0003 :用来获取检查框或单选按钮的状态。0 表示未选中,1 表示被选中,2 表示不
确定状态(仅用于检查框 )。
o 0x0004 :用来判断按钮是否是高亮度显示。非 0 值意味着按钮是高亮度显示的。当单
击按钮并按住鼠标左键时,按钮会呈高亮度显示。
o 0x0008 :非零值表示按钮拥有输入焦点。
2 .SetState()函数
该成员函数声明如下:
void SetState(BOOL bHighlight);
当参数 bHeightlight 值为 TRUE 时,该函数将按钮设置为高亮度状态,否则,去除按钮
的高亮度状态。
3 .GetCheck()函数
该成员函数声明如下:
int GetCheck() const;
返回检查框或单选按钮的选择状态 。返回值 0 表示按钮未被选择,1 表示按钮被选择,2
表示按钮处于不确定状态(仅用于检查框 )。
4 .SetCheck()函数
该成员函数声明如下:
void SetCheck(int nCheck);
设置检查框或单选按钮的选择状态。参数 nCheck 的值含义与 GetCheck 返回值相同。
5 .GetButtonStyle()函数
该成员函数声明如下:
UINT GetButtonStyle() const;
该函数用于获得按钮控件的 BS_XXXX 风格。
6 .SetButtonStyle()函数
该成员函数声明如下:
void SetButtonStyle( UINT nStyle; BOOL bRedraw = TRUE );
设置按钮的风格,参数 nStyle 指定了按钮的风格,bRedraw 为 TRUE 则重绘按钮,否则
就不重绘。
7 .SetBitmap()函数
该成员函数声明如下:
HBITMAP SetBitmap(HBITMAP hBitmap);
设置按钮显示的位图,参数 hBitmap 指定了位图的句柄,该函数还会返回按钮原来的位图。
·113 ·
…………………………………………………………Page 123……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
8.GetBitmap()函数
该成员函数声明如下:
HBITMAP GetBitmap() const;
返回以前用 SetBitmap 设置的按钮位图。
9 .SetIcon()函数
该成员函数声明如下:
HICON SetIcon( HICON hIcon);
设置按钮显示的图标,参数 hIcon 指定了图标的句柄,该函数还会返回按钮原来的图标。
10.GetIcon()函数
该成员函数声明如下:
HICON GetIcon() const;
返回以前用 SetIcon 设置的按钮图标。
11.SetCursor()函数
该成员函数声明如下:
HCURSOR SetCursor(HCURSOR hCursor);
设置按钮上显示的光标图,参数 hCursor 指定了光标的句柄,该函数还会返回按钮原来
的光标。
12.SetCursor()函数
该成员函数声明如下:
HCURSOR GetCursor();
返回以前用 GetCursor 设置的光标。
13.与按钮有关的 CWnd 成员函数
另外,可以使用下列的一些与按钮控件有关的 CWnd 成员函数来设置或查询按钮的状态。
使用这些函数的好处在于不必构建按钮控件对象,只要知道按钮的 ID,就可以直接设置或查
询按钮。
void CheckDlgB
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!