Нужно только несколько строк в элементе управления CListCtrl, чтобы иметь флажки

#mfc

Вопрос:

Я использую элемент управления CListCtrl для отображения информации в моем приложении MFC. На данный момент у меня установлены флажки LVS_EX_ в SetExtendedStyle, поэтому все строки в элементе управления имеют флажок рядом с ними. Однако мне бы хотелось, чтобы только в некоторых строках элемента управления были установлены флажки. Возможно ли это ? Если да, то как это делается ?

Спасибо

Иан

Ответ №1:

Для каждого элемента, у которого не должно быть флажка:

 LVITEM lvi;
lvi.stateMask = LVIS_STATEIMAGEMASK;
lvi.state = INDEXTOSTATEIMAGEMASK(0);
::SendMessage(m_hWnd, LVM_SETITEMSTATE, nItem, (LPARAM)amp;lvi);
 

Чтобы «создать» флажок для элемента:

 SetCheck(Item, true/false);
 

Комментарии:

1. быстрый Q — щелчок на месте, где будет установлен флажок, вызовет его, это я или функция CListCtrl?

2. @Serge: Есть ли ответ на gbjbannb?

Ответ №2:

Да, так и есть. Все, что вам нужно будет сделать, это создать растровые изображения флажков и включить их в обратный вызов. Одна из ваших битовых карт будет пустой.

В качестве альтернативы вы можете сделать какой-нибудь рисунок владельца и вызвать функцию DrawFrameControl.

Вы также можете добавить код для проверки щелчков мыши и ответить соответствующим образом.