CTreeCtrl
1573
3
(Visual C++)

Есть дерево, которое нужно забить айтемами.
Делаю:

CTreeCtrl *hTree = (CTreeCtrl *) GetDlgItem(IDC_TREE1);
HTREEITEM hRoot, hItem;
hRoot = hTree->InsertItem("RootItem", 0, 0, TVI_ROOT, TVI_SORT);
hItem = hTree->InsertItem("ChildItem", 0, 0, hRoot, TVI_SORT);

Нода hRoot отображается, а дочерняя нет.
В чем дело?
Попробуй вручную установить родительскому айтему атрибут родителя:

TVITEM tvItem;
tvItem.mask = TVIF_HANDLE | TVIF_CHILDREN;
tvItem.hItem = hRoot;
tvItem.cChildren = 1;
hTree->SetItem(&tvItem);

Или изначально создать его с помощью TVINSERTSTRUCT, эксплиситно указав этот атрибут.
onanymous
Спасибо, но все оказалось гораздо проще.

CTreeCtrl *hTree = (CTreeCtrl *) GetDlgItem(IDC_TREE1);
HTREEITEM hRoot, hItem;
hRoot = hTree->InsertItem("RootItem", 0, 0, TVI_ROOT, TVI_SORT);
hItem = hTree->InsertItem("ChildItem", 0, 0, hRoot, TVI_SORT);
hTree->Expand(hRoot, TVE_EXPAND);
Хммм... Так "Expand" можно было сделать и вручную, надавив на крестик около разворачиваемого айтема - это ж чистой воды визуализация. :-) Я-то думал, что "дети" не появляются вообще, как таковые... :-)