Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Borland C++ Builder/Turbo C++ Explorer > Ребят кто нить работал с VirtualTreeView


Автор: desivers 16.03.07, 01:11
Ребят кто нить работал с VirtualTreeView? Может кто нить подсказать по работе с ним, нигде не нашел как работать с ним через Builder а на Delphi у них слишком сложные примеры.

Автор: artalex 16.03.07, 05:39
desivers
см. здесь

Автор: Syslik 11.12.17, 15:39
Всем привет, помогите разобраться с чтением данных чужого VirtualTreeView. Перебор элементов организовал с помощью цикла (другое типа TVM_GETCOUNT не работает, или я не то делаю). Код следующий:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    HWND h3, h4;
    ...
    h4 = FindWindowEx(h3, NULL, "TAdvVirtualTreeView", NULL);
     
    HTREEITEM Root = (HTREEITEM)::SendMessage(h4, TVM_GETNEXTITEM, TVGN_FIRSTVISIBLE, 0);
    while (Root)
    {
       TV_ITEM tvi;
       tvi.hItem = HTREEITEM(Root);
       tvi.mask = TVIF_HANDLE + TVIF_TEXT;
       SendMessage(h4,TVM_GETITEM,0,(LPARAM)&tvi)
       //
       Root = (HTREEITEM)::SendMessage(h4, TVM_GETNEXTITEM, TVGN_NEXTVISIBLE, (LPARAM)Root);
    }

а как достучаться к данным Item[]? TVM_GETITEM на выходе пустой. Пробовал посмотреть события через Spy++, приходят типа WM_USER+47361 и т.д. Спасибо.

Автор: Славян 11.12.17, 16:09
Ну если текст просите, то надо же в структуре указать, куда текст складывать (адрес строки-pszText) да и размер строки тоже надобно сообщить(cchTextMax).

Автор: Syslik 11.12.17, 16:38
Да, но я так думаю, что там и структура другая, не TV_ITEM. Я это делал
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    TVITEM tvItem;
    tvItem.mask = TVIF_TEXT;
    tvItem.hItem = Root;
    tvItem.pszText = (char*)remoteBuffer + sizeof(TVITEM);
    tvItem.cchTextMax = 255;

Пробовал подпихнуть и TVirtualNode
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    struct TVirtualNode
    {
    private:
        struct _TVirtualNode__1
        {
     
        };
    public:
        unsigned Index;
        unsigned ChildCount;
        System::Word NodeHeight;
        TVirtualNodeStates States;
        System::Byte Align;
        TCheckState CheckState;
        TCheckType CheckType;
        System::Byte Dummy;
        unsigned TotalCount;
        unsigned TotalHeight;
        TVirtualNode *Parent;
        TVirtualNode *PrevSibling;
        TVirtualNode *NextSibling;
        TVirtualNode *FirstChild;
        TVirtualNode *LastChild;
        _TVirtualNode__1 Data;
    };

также без результата (пусто).

Автор: Kliner 14.12.17, 11:01
Работал, но мне не понравилось. Слишком все все сложно в этой проге, есть проще.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)