В диалоговом окне 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;
}
Как-то я думаю, что этот метод не так собственно и может быть лучше по-другому. Все предложения приветствуются.
EDIT: UPDATE: после написания кода все работает, но перед вами стоит новая проблема. вызов функции SetCheck() внутри функции обработчика сообщений OnItemChanged, она вызывает ту же функцию снова, создавая рекурсию. Таким образом, изменение выбора как-то медленное. Как этого избежать. Пожалуйста, помогите. ????
Я проверил свойства listctrl из представления источника. Единственный выбор задан верно. Но все же я могу выбрать несколько флажков за раз. Возможно, я ошибался в своем вопросе, произнося несколько вариантов, на самом деле это проблема множественного выбора флажка. –