钮控件包括命令按钮(Button)、单选按钮(Radio Button)和复选框(Check Box)等。命令按钮就是我们前面多次提到的狭义的按钮控件,用来响应用户的鼠标单击操作,进行相应的处理,它可以显示文本也可以嵌入位图。单选按钮使用时,一般是多个组成一组,组中每个单选按钮的选中状态具有互斥关系,即同组的单选按钮只能有一个被选中。
命令按钮是我们最熟悉也是最常用的一种按钮控件,而单选按钮和复选框都是一种比较特殊的按钮控件。单选按钮有选中和未选中两种状态,为选中状态时单选按钮中心会出现一个蓝点,以标识选中状态。一般的复选框也是有选中和未选中两种状态,选中时复选框内会增加一个“√”,而三态复选框(设置了BS_3STATE风格)有选中、未选中和不确定三种状态,不确定状态时复选框内出现一个灰色“√”。
按钮控件会向父窗口发送通知消息,最常用的通知消息莫过于BN_CLICKED和BN_DOUBLECLICKED了。用户在按钮上单击鼠标时会向父窗口发送BN_CLICKED消息,双击鼠标时发送BN_DOUBLECLICKED消息。
按钮控件的创建
MFC提供了CButton类封装按钮控件的所有操作。
之前的教程中,我们是在对话框模板上直接添加的按钮控件资源,但某些特殊情况下需要我们动态创建按钮控件,即通过CButton类的成员函数Create来创建按钮。下面是Create函数的原型:
virtual BOOL Create(
LPCTSTR lpszCaption,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID
);
参数说明:
lpszCaption:指定按钮控件显示的文本。
dwStyle:指定按钮控件的风格,可以设置为以下按钮风格的任意组合。
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风格使按钮控件具有tab停止属性,即按tab键切换焦点控件时能够将焦点停在按钮控件上。创建一组单选按钮时,第一个按钮的风格应设置为WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_GROUP|BS_AUTORADIOBUTTON,其他单选按钮的风格应为WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON,不包含WS_TABSTOP和WS_GROUP。
在对话框模板上直接添加按钮控件时,它的属性中包含了上述风格,例如,复选框的Tri_state属性实际上代表的就是BS_3STATE风格。
剩下的三个参数与静态文本框的Create函数中的相应参数类似,大家可以参考前面静态文本框的讲解,也可以查阅MSDN。
CButton类的主要成员函数
下面是CButton类的一些主要的成员函数,至于其他的函数大家可以在MSDN中查看。
HBITMAP SetBitmap(HBITMAP hBitmap);
设置要在按钮中显示的位图。参数hBitmap为位图的句柄。返回值为按钮原来位图的句柄。
HBITMAP GetBitmap( ) const;
获取之前由SetBitmap函数设置的按钮位图的句柄。
void SetButtonStyle(UINT nStyle,BOOL bRedraw = TRUE);
设置按钮的风格。参数nStyle指定按钮的风格,bRedraw指定按钮是否重绘,为TRUE则重绘,否则不重绘,默认为重绘。
UINT GetButtonStyle( ) const;
获取按钮控件的风格。
void SetCheck(int nCheck);
设置按钮的选择状态。参数nCheck为0表示未选中状态,1表示选中状态,2表示不确定状态(仅用于复选框)。
int GetCheck( ) const;
获取按钮的选择状态。返回值的意义同SetCheck函数的nCheck参数。
HCURSOR SetCursor(HCURSOR hCursor);
设置要显示到按钮上的光标图。参数hCursor指定了光标的句柄。返回值为按钮原来光标的句柄。
HCURSOR GetCursor( );
获取之前由SetCursor设置的光标的句柄。
HICON SetIcon(HICON hIcon);
设置要在按钮上显示的图标。参数hIcon指定了图标的句柄。返回值为按钮原来图标的句柄。
HICON GetIcon( ) const;
获取之前由SetIcon设置的图标的句柄。
void SetState(BOOL bHighlight);
设置按钮的高亮状态。参数bHighlight指定按钮是否高亮显示,非0则高亮显示,否则取消高亮显示状态。
UINT GetState( ) const;
获取按钮控件的选择状态、高亮状态和焦点状态。我们可以通过将返回值与各个掩码相与来获得各种状态值,掩码与对应的相与结果说明如下:
掩码0x0003:用来获取单选按钮或复选框的状态。相与结果为0表示未选中,1表示被选中,2表示不确定状态(仅用于复选框)。
掩码0x0004:用来判断按钮是否是高亮显示。相与结果为非0值表示按钮是高亮显示的。当单击按钮并按住鼠标左键时,按钮会呈高亮显示。
掩码0x0008:相与结果为非零值表示按钮拥有输入焦点。
下面再列出几个继承自CWnd类的成员函数,通过它们获取或设置按钮控件的状态非常方便,只需要知道按钮的ID。
void CheckDlgButton(int nIDButton,UINT nCheck);
用来设置按钮的选择状态。参数nIDButton指定了按钮的ID。nCheck的值为0表示按钮未被选择,为1表示按钮被选择,为2表示按钮处于不确定状态(仅用于复选框)。
UINT IsDlgButtonChecked(int nIDButton) const;
返回复选框或单选按钮的选择状态。返回值为0表示按钮未被选择,为1表示按钮被选择,为2表示按钮处于不确定状态(仅用于复选框)。
void CheckRadioButton(int nIDFirstButton,int nIDLastButton,int nIDCheckButton);
用来选择组中的一个单选按钮。参数nIDFirstButton指定了组中第一个按钮的ID,nIDLastButton指定了组中最后一个按钮的ID,nIDCheckButton指定了要选择的按钮的ID。
int GetCheckedRadioButton(int nIDFirstButton, int nIDLastButton);
用来获得一组单选按钮中被选中按钮的ID。参数nIDFirstButton 说明了组中第一个按钮的ID,nIDLastButton 说明了组中最后一个按钮的ID。
另外,CWnd类的成员函数GetWindowText()、SetWindowText()等也可以用来获取或设置按钮中显示的文本。
分享到:
相关推荐
本教程将详细介绍如何在VS2010 MFC应用中实现单选按钮(radio button)和复选框(check box)的功能,并提供一个可运行的实例——`radio_button_test`。 首先,我们需要创建一个新的MFC对话框应用程序。在VS2010中...
在本文中,我们将深入探讨如何在MFC(Microsoft Foundation Class)框架中使用按钮控件,特别是单选按钮(Radio Button)和复选框(Check Box)。MFC是微软为Windows应用程序开发提供的一种C++类库,它封装了Windows...
在本文中,我们将深入探讨如何在Visual Studio 2019 (VS2019) 中使用MFC(Microsoft Foundation Classes)实现Check Box和Radio Button的功能。MFC是微软为Windows应用程序开发提供的一种C++库,它封装了Windows API...
MFC控件属性是VC++6.0控件工具箱中提供的一种控件,具有多种功能和应用场景。下面是MFC控件属性的详细介绍: 1. 图形控件(Picture):用于显示位图(Bitmap)和图标(Icon)。 MFC提供了CPicture控件类对图形控件...
8. **复选框(Check Box)和单选按钮(Radio Button)** CButton类也可用于创建复选框和单选按钮,通过BST_CHECKED和BST_UNCHECKED状态来控制它们的选中状态。可以设置BST_GROUP以创建单选按钮组。 9. **控件布局...
在编程领域,尤其是在GUI(图形用户界面)设计中,单选框(Radio Button)和复选框(Check Box)是两种常见的用户交互元素。本文将深入探讨这两种控件的使用方法,以及它们在Visual C++环境下的实现。 单选框...
CButton类支持多种不同类型的按钮,包括Push Button、Check Box和Radio Box。这些按钮的样式可以通过在创建按钮时设置`dwStyle`参数来定义。让我们详细了解一下每种按钮风格: 1. **BS_AUTOCHECKBOX**:检查框,其...
5.27 Visual C++ 2010 Check Box控件 5.27 简介与开发 262 5.28 Visual C++ 2010 Radio Button 5.28 控件简介与开发 264 5.28.1 为单选按钮控件分组 264 5.28.2 获得被选中的单选按钮的 5.28.2 文本 264 5.29 Visual...
5.28 Visual C++ 2010 Radio Button控件简介与开发 264 5.28.1 为单选按钮控件分组 264 5.28.2 获得被选中的单选按钮的文本 264 5.29 Visual C++ 2010 Mediaplayer控件简介与开发 265 5.30 小结 266 第二部分 Visual...
Visual C++MFC入门教程 目录 +-- 第一章 VC入门 |------ 1.1 如何学好VC |------ 1.2 理解Windows消息机制 |------ 1.3 利用Visual C++/MFC开发Windows程序的优势 |------ 1.4 利用MFC进行开发的通用方法介绍 |----...
MFC提供滚动条控件(CWnd::CreateScrollBarCtrl)和微调按钮控件(CSpinButtonCtrl),使得用户可以通过拖动或按钮来调整数值。 #### 10.9 列表视图(ListView) ListView控件可以显示一个包含列和行的列表,常...
5.28 Visual C++ 2010 Radio Button控件简介与开发 264 5.28.1 为单选按钮控件分组 264 5.28.2 获得被选中的单选按钮的文本 264 5.29 Visual C++ 2010 MediaPlayer控件简介与开发 265 5.30 小结 266 第...
3. **复选框(Check Box)** 和 **单选按钮(Radio Button)**:用于提供多种选择,复选框允许多选,单选按钮则只能选择一个。 4. **列表框(List Box)** 和 **组合框(ComboBox)**:列表框显示一系列可选项,用户只能...
5.28 Visual C++ 2010 Radio Button控件简介与开发 264 5.28.1 为单选按钮控件分组 264 5.28.2 获得被选中的单选按钮的文本 264 5.29 Visual C++ 2010 MediaPlayer控件简介与开发 265 5.30 小结 266 第...
1,01.zip 3D Text 显示3D文字(6KB)<END><br>2,02.zip A button within a button 按纽中的按纽(13KB)<END><br>3,03.zip Flat Owner Drawn Buttons 浮动的自画按纽(13KB)<END><br>4,04.zip Flat-...
确保单选按钮IDC_Full_RADIO和IDC_Nominal_RADIO紧密排列,不允许有其他控件插在它们之间。同样,IDC_Day_EDIT编辑框和IDC_Day_SPIN微调控件也应紧邻放置,且IDC_Day_SPIN的Styles标签页中应勾选“Auto buddy”和...
首先,Windows操作系统提供了丰富的内置控件,如Static Text(静态文本)、Edit Box(编辑框)、CommandButton(命令按钮)、Check Box(复选框)、Radio Button(单选按钮)和Drop-Down List Box(下拉列表框)。...
4. **消息映射**: MFC使用消息映射机制处理控件的消息,通过`ON_BN_CLICKED(IDC_BUTTON1, OnButton1Click)`这样的条目,我们可以指定当用户点击按钮时应调用哪个成员函数。 5. **对话框实例化与显示**: 通常在`...