2014-01-23 1 views
1

Я пытаюсь создать простую группу в CListrCtrl с одним элементом, но он не показывает мне что-нибудь:Окна CListCtrl и группы

EnableGroupView(TRUE); 

LVGROUP group = { 0 }; 
group.cbSize = sizeof(LVGROUP); 
group.iGroupId = 1; 
group.state = LVGS_NORMAL; 
group.mask = LVGF_GROUPID | LVGF_HEADER | LVGF_STATE | LVGF_ALIGN; 
group.uAlign = LVGA_HEADER_LEFT; 

int idx = InsertGroup(0, &group); 

LVITEM item = {0}; 
item.mask = LVIF_TEXT | LVIF_IMAGE;// | LVIF_GROUPID; 
item.iItem = 0; 
item.iSubItem = 0; 
item.pszText = L"aa"; 
item.cchTextMax = 3; 
item.state = 0; 
item.stateMask = LVIS_SELECTED; 
item.iGroupId = idx; 
InsertItem(&item); 

BTW, я могу видеть этот предмет, только если я не включить режим группового просмотра. Я делаю что-то неправильно?

PS: Windows 7 + MSVC 2010

ответ

3

LVITEM::iGroupId член ожидает идентификатор группы но вы передаете его индекс в группу вместо этого. Вот почему вы не видите элемент - вы добавляете его в несуществующую группу. Вам нужно установить item.iGroupId на group.iGroupId (то есть 1).

+0

спасибо, это была моя ошибка. Я очень удивлен недостаточностью образцов для такого контроля, как CListCtrl ... – Tutankhamen