zoukankan      html  css  js  c++  java
  • 【MFC 学习笔记】CheckListBox

    ListBox是MFC中文本列表控件,CheckListBox是继承了ListBox的MFC中自带的一种控件,和ListBox的区别就是在每条文本前面有一个选择框。

    1. 设置

    如果是需要复选,那么需要设置一下。到你的对话框界面,在ListBox的属性上设置:

               Owner Draw - Fixed,

               Has Strings - True。

    2. 添加变量

    自己添加的是ListBox的变量,而后自己将CListBox改成CCheckedBox。

    3. 加入项

        m_checklist.AddString(_T("Monday"));
    m_checklist.AddString(_T("Tuesday"));
    m_checklist.AddString(_T("Wednesday"));
    m_checklist.AddString(_T("Thusday"));
    m_checklist.AddString(_T("Friday"));
    m_checklist.AddString(_T("Saturday"));
    m_checklist.AddString(_T("Sunday"));

    加入这些项的结果截图:


    4. 当前选择

    要知道用户当前选择可以使用消息响应:LBN_SELCHANGE来随时跟踪选择。

    要知道当前的选择可以使用函数GetCurSel()

    void CDlgCheckList::OnLbnSelchangeList()
    {
    curSel = m_checklist.GetCurSel();
    CString curSel_str;
    curSel_str.Format("Current Select: %d",curSel);
    m_edit_show.SetWindowTextA(curSel_str);
    }

    结果:

    5. 不自动排列

    使用函数AddString的时候,列表默认的是自动排列的,要取消排列只需要在属性-->sort-->false即可

        m_checklist.AddString(_T("Friday"));
    m_checklist.AddString(_T("Saturday"));
    m_checklist.AddString(_T("Sunday"));
    m_checklist.AddString(_T("Monday"));
    m_checklist.AddString(_T("Tuesday"));
    m_checklist.AddString(_T("Wednesday"));
    m_checklist.AddString(_T("Thusday"));

    结果:

    6. 获得选择

    获得选择可以使用GetCheck函数得到,该函数返回的是int值的

    BST_CHECKED:The check box is checked.

    BST_UNCHECKED:The check box is not checked.

    BST_INDETERMINATE:The check box state is indeterminate.

    void CDlgCheckList::OnBnClickedGetSel()
    {
    CString selItems;
    for(int i = 0 ; i < m_checklist.GetCount() ; i++)
    {
    if(m_checklist.GetCheck(i))
    selItems.Format("%s,%d",selItems,i);
    }

    m_edit_show.SetWindowTextA(selItems);
    }

    结果:


    7. 设置选择

    与前面方法类似,使用函数setCheck,第一个参数是需设置的Item的序号,第二个参数是需设置的Item的值,使用上面列出的int值进行赋值

    void CDlgCheckList::OnBnClickedSelAll()
    {
    for(int i = 0; i < m_checklist.GetCount(); i++)
    {
    m_checklist.SetCheck(i,BST_CHECKED);
    }

    }

    结果:



  • 相关阅读:
    ListView -————不能不说的秘密
    良好的开端是成功的第一步———构建程序
    你所不知道的windows窗体
    数据库查询终结版2———分组——连接
    数据库的终结版查询————你想知道吗?
    《官神》浏览闲看笔记
    坚信梦想,奋勇前进!____OS小题狂刷2333
    众里寻他千百度,蓦然回首,却见写者优先算法,她在书本寂静处!
    生产消费问题扩展——三个并发进程R,M,P和一个共享的循环缓冲区B的并发控制
    多生产者-多消费者-环形缓冲区问题
  • 原文地址:https://www.cnblogs.com/xiaoka/p/2371758.html
Copyright © 2011-2022 走看看