В настоящее время я работаю над таблицей свойств и тем, что моя вторая страница состоит из списка. Я добавил флажок в заголовок столбца и установил listcontrol с помощью стиля LVS_EX_CHECKBOX. Итак, теперь самый первый столбец и его заголовок состоят из флажков.Проблема с обработкой заголовка столбца списка управления?
, когда я устанавливаю флажки, соответствующие элементам один за другим, и когда я проверяю флажок последнего элемента в списке, тогда флажок заголовка также получает флажок. До этого момента это нормально. Теперь я не выбрал все флажки и теперь попробовал щелкнуть заголовок, чтобы установить флажок check для всех элементов checkboxes. К сожалению, я не могу установить флажки элементов списка. Только этот флажок заголовка проверяется и не проверяется.
Добавление флажка в listheader следующим образом в классе страниц.
BOOL OnInitDialog()
{
DWORD dwStyle = ::GetWindowLong(header, GWL_STYLE);
dwStyle |= HDS_CHECKBOXES;
::SetWindowLong(header, GWL_STYLE, dwStyle);
m_listCtrl.SetExtendedStyle(m_listCtrl.GetExtendedStyle() |
LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT);
}
Я попытался обработки следующие события для получения чекбокс заголовок столбца нажмите
HDN_ITEMCLICK
HDN_ITEMSTATEICONCLICK
// Это реализуется в обработчике событий LVN_ITEMCHANGED (При проверке элементов списка CheckBox по одному и для окончательной проверки в списке я устанавливаю флажок заголовка).
void CMFPSearchListView::OnListViewItemchanged(NMHDR *pNMHDR, LRESULT *pResult)
{
LVCOLUMN pColumn = {0};
pColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
m_listCtrl.GetColumn(0, &pColumn);
if(blAllChecked)
pColumn.fmt |= HDF_CHECKED;
else
pColumn.fmt &= ~HDF_CHECKED;
//m_listCtrl.InsertColumn(1, &pColumn);
m_listCtrl.SetColumn(0, &pColumn);
*pResult=0;
}
Может кто-нибудь, пожалуйста, сообщите мне, если я не инициирую правильное событие. Любая помощь приветствуется.
Спасибо за ваш reply.When я сделал, как Вы предложили, когда я проверяю флажок заголовка, то все элементы становятся проверены, но целые элементы в списке приходят в режим выбора (выбор синего цвета для всех элементов в списке). Как мы можем избежать этого выбора, когда мы выбираем флажок заголовка, только элементы должны быть выбраны правильно? Перед тем, как этот выбор не наступит. После этого, как вы предложили , это из-за каких-либо настроек стиля? – Siva
На самом деле listcontrol имеет следующий стиль. m_listCtrl.SetExtendedStyle (m_listCtrl.GetExtendedStyle() | LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT); изменить стиль listcontrol? – Siva
Все выбранные элементы являются поведением CListCtrl по умолчанию при возврате с 'pResult = 0;' – acraig5075