63上位机VC MFC列表框控件实现标签式数据选择
63上位机VC MFC列表框控件实现标签式数据选择
功能展示
有时候我们使用列表控件时,想在内部罗列出复选按钮,供用户选择相应功能,比如当前工程中想使<强制退出>按钮生效,我们就得复选上强制退出选项。MFC列表控件类CListBoxt不带这功能,怎么办呢?我们这例程实现了这功能,效果如图 要点提示 微软通过升级CListBox,给我们另外提供了CCheckListBox类, CCheckListBox是对CListBox的扩充,使用CListBox具有了标签复选功能。通过CCheckListBox类的成员函数SetCheckStyle()方法实现列表标签复选样式,然后通过SetCHeck方法使用列表项前的复选框处于选中状态,通过GetCheck()函数获得列表项前的复选状态,如果返回1为选中,0为没有被选中; 实现功能 1.新建基于对话框的应用程序 2.添加一个列表框控件,并关联控件如我们控件CListBox m_CheckList;然后更改变量类型为CCheckListBox m_CheckList;初始化这个变量,如我们当前例程m_CheckList.SetCheckStyle(BS_CHECKBOX);m_CheckList.AddString("去工控编程吧"); m_CheckList.AddString("去工控学堂"); m_CheckList.AddString("强制退出"); m_CheckList.AddString("联系作者"); 3.添加几个按钮,我们当前添加四个来给列表框控制。这四个按钮ID不改动,文本设置为上面四个文本
4.用VC类向导添加CListBox的单击或双击事件函数,我们例程为单击事件,再添加一个按钮及它的响应函数额外实现CListBox 选项的执行; - void CGkbc8Dlg::OnSelchangeList1() //列表框控件单击事件处理
- {
- int i=m_CheckList.GetCurSel();
- if(i<0)
- return;
- if(m_CheckList.GetCheck(i)<1)
- {
- m_CheckList.SetCheck(i,1);
- if(i==0)
- GetDlgItem(IDC_BUTTON1)->EnableWindow();
- }
- else
- {
- m_CheckList.SetCheck(i,0);
- if(i==0)
- GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE);
- }
- }
- void CGkbc8Dlg::OnButton5()
- {
- if(m_CheckList.GetCheck(1))
- GetDlgItem(IDC_BUTTON2)->EnableWindow(TRUE);
- else
- GetDlgItem(IDC_BUTTON2)->EnableWindow(FALSE);
- if(m_CheckList.GetCheck(2))
- GetDlgItem(IDC_BUTTON3)->EnableWindow(TRUE);
- else
- GetDlgItem(IDC_BUTTON3)->EnableWindow(FALSE);
- if(m_CheckList.GetCheck(3))
- GetDlgItem(IDC_BUTTON4)->EnableWindow(TRUE);
- else
- GetDlgItem(IDC_BUTTON4)->EnableWindow(FALSE);
- }
复制代码我们来演示下功能实现的整个过程
|