按钮控件

按钮控件包括普通按钮,复选框,单选按钮,分组框,自绘式按钮

按钮控件的基类-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 }

编译运行的效果:

posted @ 2015-03-25 14:32  (安于此生)  阅读(498)  评论(0编辑  收藏  举报