按钮控件
按钮控件包括普通按钮,复选框,单选按钮,分组框,自绘式按钮
按钮控件的基类-CButton常用的成员函数如下:
Create():负责创建按钮控件
GetState():获取单选按钮或者复选框的状态
SetState():设置按钮控件的状态
SetCheck():设置单选按钮或复选框的选中状态(参数为0表示未选中;参数为1表示选中;参数为2表示不确定)
GetButtonStyle():获取按钮对象的风格
SetButtonStyle():设置按钮对象的风格
SetIcon():指定按钮上显示的图标
GetIcon():返回由SetIcon()设置的图标句柄
SetBitmap():设定按钮上显示的位图
SetCursor():设置按钮上显示的光标
GetBitmap():返回由SetBitmap()设置的位图句柄
GetCursor():返回由SetCursor设置的光标句柄
创建按钮控件的方法是分为两种:
(1)动态创建(直白一点说就是通过手工调用CButton类的Create来创建)
那么如下指定按钮是普通按钮,还是单选按钮等等呢?
通过指定Create参数2的值来指定是普通按钮,还是单选按钮,或者是其他类型的按钮
BS_CHECKBOX表示复选框按钮,BS_PUSHBUTTON表示普通按钮,BS_RADIOBUTTON表示单选按钮等等
样例:
新建一个基于对话框的MFC程序,在主对话框类中添加3个CButtton类的成员
1 class CControlDlg : public CDialogEx 2 { 3 //省略 4 CButton m_myButton1; 5 CButton m_myButton2; 6 CButton m_myButton3; 7 //省略 8 };
接着在主对话框的初始化函数中动态创建1一个普通按钮,1个单选按钮,1个复选按钮
BOOL CControlDlg::OnInitDialog() { //省略 //创建一个普通按钮 m_myButton1.Create(_T("普通按钮"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(10,10,100,30),this,1); //创建一个单选按钮 m_myButton2.Create(_T("单选按钮"),WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON,CRect(10,40,100,70), this,2); //创建一个复选框 m_myButton3.Create(_T("复选按钮"),WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX,CRect(10,100,100,130),this,4); //省略 }
编译运行后的效果如下:
(2)静态创建(直白一点说就是将工具箱中的按钮控件拖拽到对话框容器上,然后绑定相应的变量)
拖拽控件没什么好说的,直接上示例
这里我设置的界面是这样的
给单选按钮以及复选框绑定相应的变量,单选按钮只需要绑定第一个按钮即可
1 class CControlDlg : public CDialogEx 2 { 3 //省略 4 int m_nPos; //单选按钮 5 BOOL m_bJKS; //复选按钮贾克斯 6 BOOL m_bJN; //复选按钮冰女 7 BOOL m_bAN; //复选按钮安妮 8 BOOL m_bJW; //复选按钮皇子 9 BOOL m_bJS; //复选按钮剑圣 10 BOOL m_bDM; //复选按钮刀妹 11 //省略 12 };
接着给确定按钮添加单击时间响应函数
1 void CControlDlg::OnBnClickedButton1() 2 { 3 UpdateData(TRUE); 4 5 CString str; 6 str = _T("英雄联盟中您最喜欢玩的位置是: "); 7 switch (m_nPos) 8 { 9 case 0: 10 { 11 str += _T("上单"); 12 } 13 break; 14 case 1: 15 { 16 str += _T("中单"); 17 } 18 break; 19 case 2: 20 { 21 str += _T("ADC"); 22 } 23 break; 24 case 3: 25 { 26 str += _T("打野"); 27 } 28 break; 29 case 4: 30 { 31 str += _T("辅助"); 32 } 33 break; 34 default: 35 { 36 str = _T("请选择您最喜欢玩的位置!"); 37 return; 38 } 39 break; 40 } 41 42 str += _T("\r\n"); 43 str += _T("您最喜欢玩的英雄是: "); 44 45 if (m_bJKS == TRUE) 46 { 47 str += _T(" 贾克斯"); 48 } 49 50 if (m_bJN == TRUE) 51 { 52 str += _T(" 冰女"); 53 } 54 55 if (m_bAN == TRUE) 56 { 57 str += _T(" 安妮"); 58 } 59 60 if (m_bJW == TRUE) 61 { 62 str += _T(" 皇子"); 63 } 64 65 if (m_bJS == TRUE) 66 { 67 str += _T(" 剑圣"); 68 } 69 70 if (m_bDM == TRUE) 71 { 72 str += _T(" 刀妹"); 73 } 74 75 AfxMessageBox(str); 76 }
编译运行的效果: