Погода: -12°C
  • (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, эксплиситно указав этот атрибут.

  • Спасибо, но все оказалось гораздо проще.

    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" можно было сделать и вручную, надавив на крестик около разворачиваемого айтема - это ж чистой воды визуализация. :-) Я-то думал, что "дети" не появляются вообще, как таковые... :-)

Записей на странице:

Перейти в форум

Модератор: