首页 > 编程语言 > 详细

MFC_2.1使用单选和多选框

时间:2019-05-27 00:06:38      阅读:219      评论:0      收藏:0      [点我收藏+]

使用单选和多选框

单选

1.拖控件

设置名字,CTRL+D设置顺序,属性设置第一个GROUP为TRUE;

2.设置第一个按钮绑定变量为 值 INT型 名称m_RadioIndxe;

3.设置单击响应内容。

// 响应按钮点击的事件: 获取单选选项
void CDefaultDlg::OnBnClickedGetradiobutton()
{
// 1. 通过 Updatedata(TRUE) 获取控件的信息到绑定的变量
UpdateData(TRUE);
?
// 2. m_RadioIndex 保存的是以 0 为起始的当前选中项
CString RadioText;
GetDlgItemText(IDC_RADIO1 + m_RadioIndex, RadioText);
?
// 3. 弹出选中的单选项
MessageBox(RadioText);
?
// 4. 通过 UpdateData(FALSE) 重新设置新的选项
m_RadioIndex = 0;
UpdateData(FALSE);
}

多选框

1.拖复选框控件

2.设置绑定变量属性。值的设置BOOL类型。控件默认类型。tri的会默认控件类型。

3.ON_COMMAND_RANGE调用自定义的OnchecBox函数。

BEGIN_MESSAGE_MAP(CMFCApplication1Dlg, CDialogEx)
ON_COMMAND_RANGE(IDC_CHECK2, IDC_CHECK4, OnCheckBox)
END_MESSAGE_MAP()
   // 多个多选按钮的响应函数,nId 表示响应的是哪个按钮
   VOID CMFCApplication1Dlg::OnCheckBox(UINT nId)
{
// 当前选中了几项
int count = 0;
?
// 获取控件当前的状态到变量
UpdateData(TRUE);
?
// 检查当前的几个多选框是否被选中
if (m_CheckBoxA == TRUE)
count++;
if (m_CheckBoxCtrlB.GetCheck() == BST_CHECKED)
count++;
// 既有值类型又有控件类型,优先设置值类型
if (m_CheckBoxC == TRUE)
count++;
?
// 根据选中的项,设置三态复选框的状态
if (count == 0)
m_CheckBoxState.SetCheck(BST_UNCHECKED);
else if (count == 3)
m_CheckBoxState.SetCheck(BST_CHECKED);
else
m_CheckBoxState.SetCheck(BST_INDETERMINATE);
?
// 将变量设置到控件上
UpdateData(FALSE);
}
   

4.

// 根据当前的选中状态,修改其它的选项
void CDefaultDlg::OnBnClickedCheck4()
{
UpdateData(TRUE);
?
// 判断当前是否选各种
if (m_CheckBoxState.GetCheck() == BST_CHECKED)
{
m_CheckBoxA = m_CheckBoxC = TRUE;
m_CheckBoxCtrlB.SetCheck(BST_CHECKED);
}
else if (m_CheckBoxState.GetCheck() == BST_UNCHECKED)
{
m_CheckBoxA = m_CheckBoxC = FALSE;
m_CheckBoxCtrlB.SetCheck(BST_UNCHECKED);
}
?
UpdateData(FALSE);
}
?
?
?

5.显示被勾选的选项信息。

//UpdateData()用来更新信息。在自定义的OncheckBox函数调用了。

//如果没有调用的话,绑定值的控件会无法更新数据,会一直显示没有被勾上。

void CDefaultDlg::OnBnClickedButton2()
{
CString CheckString;
CString TempString;
?
// 检查当前的几个多选框是否被选中
if (m_CheckBoxA == TRUE)
{
GetDlgItemText(IDC_CHECK1, TempString);
CheckString += TempString + L" ";
}
if (m_CheckBoxCtrlB.GetCheck() == BST_CHECKED)
{
m_CheckBoxCtrlB.GetWindowTextW(TempString);
CheckString += TempString + L" ";
}
if (m_CheckBoxC == TRUE)
{
m_CheckBoxCtrlC.GetWindowTextW(TempString);
CheckString += TempString;
}

// 输出选中的项
?
MessageBox(CheckString);
}

 

 

MFC_2.1使用单选和多选框

原文:https://www.cnblogs.com/ltyandy/p/10928313.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!