MFC如何让ListCtrl的CheckBox只有一个处于选中状态
Posted swust_wjy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC如何让ListCtrl的CheckBox只有一个处于选中状态相关的知识,希望对你有一定的参考价值。
1、要让ListCtrl的每一行的第一列为CheckBox,需要做如下设置:
listCtrl.SetExtendedStyle(m_listCtrl.GetExtendedStyle()|LVS_EX_CHECKBOXES);
2、
为了限制ListCtrl只能有一行的CheckBox处于选中状态,则需要:
响应ListCtrl的 LVN_ITEMCHANGED 消息:
例如:
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LC_CONFIG, OnLvnItemchangedLcConfig)
void CRestorePage::OnLvnItemchangedLcConfig(NMHDR *pNMHDR, LRESULT *pResult)
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
if(m_LcConfig.GetCheck(pNMLV->iItem)) //m_LcConfig是你的ListCtrl控件变量
UnCheckOtherItem(m_LcConfig, pNMLV->iItem);
*pResult = 0;
其中UnCheckOtherItem(...)的代码如下
void CRestorePage::UnCheckOtherItem(CListCtrl& listCtrl, int index)
for (int i=0;i<listCtrl.GetItemCount();++i)
if(i == index)
continue;
listCtrl.SetCheck(i,FALSE);
以上是关于MFC如何让ListCtrl的CheckBox只有一个处于选中状态的主要内容,如果未能解决你的问题,请参考以下文章