VS2010/MFC编程入门之二十一(常用控件:按钮控件Button、Radio Button和Check Box)

 按钮控件简介

       按钮控件包括命令按钮(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()等也可以用来获取或设置按钮中显示的文本。

       关于按钮控件Button、Radio Button和Check Box的使用基础就介绍到此,下一节中鸡啄米将举实例为大家演示各种按钮控件的使用方法,希望大家能继续关注

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VS2012是Microsoft Visual Studio 2012的缩写,是一款集成开发环境(IDE)软件,用于开发各种应用程序,包括MFC(Microsoft Foundation Class)编程。 MFC是Windows操作系统上的一个C++类库,提供了一系列类和函数,用于开发Windows桌面应用程序。通过使用MFC,开发人员可以更快、更简单地创建并管理Windows应用程序的用户界面、输入输出、文件操作等。 在VS2012中,通过使用MFC进行编程,可以利用MFC提供的各种类和函数,快速构建Windows应用程序。MFC包含了丰富的UI控件,如按钮、文本框、列表框等,开发者可以直接使用这些控件,而无需自己编写复杂的UI代码。 此外,VS2012还提供了图形化设计工具,如资源编辑器和对话框设计器,使得MFC应用程序的设计和布局更加方便。开发者可以通过拖放控件、设置属性等方式,快速创建所需的用户界面。 对于开发者而言,可以通过学习MFC编程,掌握使用MFC类库的技巧,了解如何响应用户交互、处理消息、操作文件等。MFC编程还包含一些高级概念,如多线程编程、数据库访问等,可以进一步提升应用程序的功能和性能。 在实际编程过程中,可以使用VS2012生成PDF文件的功能来输出报表、文档等。通过使用MFC类库中提供的相关类和函数,可以在应用程序中生成和编辑PDF文件。可以根据需要,设置PDF的格式、内容、样式等,以满足不同的需求。 总之,通过VS2012和MFC编程,开发者可以快速、高效地开发Windows应用程序,并且可以利用MFC类库的强大功能,实现各种复杂的操作和任务,包括生成和编辑PDF文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值