如何让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);
 // TODO: 在此添加控件通知处理程序代码  
 if(m_LcConfig.GetCheck(pNMLV->iItem))  
  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);
 }
}

原文地址:https://www.cnblogs.com/strinkbug/p/1027332.html