CButton类的学习
来源:互联网 发布:美国东密西根大学知乎 编辑:程序博客网 时间:2024/05/21 06:28
首先CButton类的功能可以创建单选按钮(RADIOBUTTON),复选框(CHECKBOX),和按钮(BUTTON),至于是创建什么样的按钮就看你指定的STYLE是什么了,其实CButton::Create有一个参数BS_GROUPBOX,可以用来创建一个组框(GROUP BOX){m_static.Create(_T("组合按 钮"),BS_GROUPBOX|WS_CHILD|WS_VISIBLE,CRect(200,200,350,350),this,1122);} m_static是CButton类
其他的按钮都好创建,就是在创建单选按钮的时候有点问题
1, m_btn1.Create(_T("新建按钮1"),WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON|WS_GROUP ,CRect(250,250,350,300),this,1215);
BS_RADIOBUTTON第一次选的风格类型,发现他不能够选中,于是乎我响应了单击消息,在响应函数里面通过SetCheck函数来摄者按钮的状态,如下:
afx_msg void C动态创建的控件关联变量Dlg::OnRadio1(void)
{
//MessageBox(_T("选中当选1"));
m_btn1.SetCheck(BST_CHECKED);
m_btn2.SetCheck(BST_UNCHECKED);
return afx_msg void();
}
afx_msg void C动态创建的控件关联变量Dlg::OnRadio2(void)
{
//MessageBox(_T("选中单选2"));
m_btn2.SetCheck(BST_CHECKED);
m_btn1.SetCheck(BST_UNCHECKED);
return afx_msg void();
}
如此来保证有且仅有一个选中,问题是,当有10个单选按钮的时候不是很麻烦,要添加十个消息响应函数、
所以我想用孙鑫老师书上所说的关联一个INT型(只能是INT型)
所以我在这里就是通过关联变量来实现
在DoDataExchange(CDataExchange* pDX)函数里面添加:DDX_Radio(pDX,1215,m_state1);
在OnInitDialog函数里面添加
m_static.Create(_T("组合按钮"),BS_GROUPBOX|WS_CHILD|WS_VISIBLE,CRect(200,200,350,350),this,1122);
m_btn1.Create(_T("新建按钮1"),WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON|WS_GROUP ,CRect(250,250,350,300),this,1215);
m_btn2.Create(_T("新建按钮2"),WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON,CRect(250,300,350,350),this,1216
刚开始风格是BS_RADIOBUTTON,但是关联的m_state1的值始终都不变,现在想想,可能是这个原因,我想通过关联的变量来设置单选的状态,也许MFC自己要设置了状态之后才知道自己关联的变量是什么位置,所以“死锁”了,有点类似啊
后面我把风格改为BS_AUTORADIOBUTTON之后就可以了
真的是不好玩啊
选中这个风格的话,在一个组里面只有一个单选按钮被选中,他会自动高亮单选按钮,标记为选中状态,同时又会把其他状态设置为未选中状态
验证:
在单选按钮添加单击消息响应函数
在消息映射函数里面添加如下
ON_BN_CLICKED(1215,OnRadioMessage)
ON_BN_CLICKED(1216,OnRadioMessage)
响应函数如下:
void C动态创建的控件关联变量Dlg::OnRadioMessage(void)
{
UpdateData();
if(m_state1==0)
{
MessageBox(_T("选中单选1"));
//m_btn1.SetCheck(BST_CHECKED);
//m_btn2.SetCheck(BST_UNCHECKED);
}
if(m_state1==1)
{
//m_btn2.SetCheck(BST_CHECKED);
//m_btn1.SetCheck(BST_UNCHECKED);
MessageBox(_T("选中单选2"));
}
}
可以看到
- CButton类的学习
- mfc的CButton类
- CButton类控件的使用
- CButton 按钮类的重写
- CButton类
- 发布我的CButton类完整版
- CButton类的Create函数用法
- 打造自己的CButton
- CButton派生类
- CButton
- CButton
- cbutton
- CTransparentStatic类的使用 CButton类的使用
- 完善我的CButton类:关于透明按钮的制作
- 如何在VS2005下建立基于CBUTTON的类
- 用VC6扩展CButton类制作风格独特的按钮
- CButton添加背景图片的方法
- 学习总结 CButton/SetCheck String/Compare
- Handler和Toast
- 自己动手编写CSDN博客备份工具-blogspider之源码分析(2)
- SQL 连接 JOIN 例解。(左连接,右连接,全连接,内连接,交叉连接,自连接)
- 自己动手编写CSDN博客备份工具-blogspider之源码分析(3)
- Unix用户新建修改以及环境变量设置总结说明
- CButton类的学习
- linux设备模型之mmc,sd子系统<二>
- 23种设计模式
- 一分钟学会Django的表单
- VirtualBox中如何全屏显示加设置共享文件夹
- Android深入浅出之Binder机制
- oracle常用命令
- 有关二分法的一点思考
- 用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败