zoukankan      html  css  js  c++  java
  • MFC_2.1使用单选和多选框

    使用单选和多选框

    单选

    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);
    }

     

     

  • 相关阅读:
    LeetCode 172:阶乘后的零
    Ubuntu12.04更新出现 The system is running in low-graphics mode解决方法
    不加参数的存储过程
    PCC-S-02201, Encountered the symbol "DB_USER_OPER_COUNT"
    该思考
    关于export环境变量生存期
    会话临时表 ORA-14452
    如何创建守护进程--及相关概念
    2014年10月末
    6个月
  • 原文地址:https://www.cnblogs.com/ltyandy/p/10928313.html
Copyright © 2011-2022 走看看