在MFC對話框中,我用複選框使用了CListCtrl。我想禁用複選框選擇,以便用戶一次只能選擇一個複選框。什麼是實現this.I最好的辦法這樣做只有CListCtrl中的單個選擇MFC中的複選框
void SomeClass::OnClickList(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
int nSelectedItemIndex = -1;
nSelectedItemIndex = m_ListCtrl.GetNextItem(-1, LVNI_SELECTED);
int nCount = m_ListCtrl.GetItemCount();
for(int nItem = 0; nItem < nCount; nItem++)
{
m_ListCtrl.SetCheck(nItem,false);
}
if(nSelectedItemIndex != -1)
m_ListCtrl.SetCheck(nSelectedItemIndex,true);
*pResult = 0;
}
不知怎的,我覺得這個方法是不那麼恰當的,並且可以由其他方式更好。歡迎所有的建議。
編輯:更新:編寫代碼後,一切正常,但我面臨一個新問題。 在OnItemChanged消息處理函數中調用SetCheck()函數,它再次調用同一函數,創建一個遞歸。因此,選擇更改速度很慢。如何避免這一點,請幫助。 ????
我已經從recource視圖中檢查了listctrl屬性。單選被設置爲true。但是我仍然可以一次選擇多個複選框。可能是我誤導了你,在我的問題上說了多重選擇,實際上它是一個多選擇複選框的問題。 –