Tree view WinApi C++

Народ допоможіть плз...

Значить така проблема. Створюю з допомогою WinApi функцій і мови програмування С++ дерево tree view і закидую туда дані динамічно (дані можуть змінюватись під час роботи програми) всьо грає красіво і всьо ок. Запускється, показується форма, списки розвертаються, звертаються. Проблема в тому, що з допомогою миші (або клави) я маю виділити якийсь елемент в дереві і програмно дізнатись, який саме елемент вибрав: в якому підкаталогі він знаходиться і як називається. Я шось пробував знайти в MSDN, але нічого толком не найшов про визначення виділеного елемента в tree view. Допоможіть плз або підкажіть де шукати.

Наприклад

+ Plane

—first

—second

+Color

—blue

—red

Резульат Color/red або шось типу того, можна навіть просто red

Бажано невеличкий код на С++

Наперед дякую.

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Дякую за код, десь після обіду скажу про результати роботи, бо зараз трохи зайнятий...



HTREEITEM hSelectedItem = SendMessage(hTreeCtrl, TVM_GETNEXTITEM, TVGN_CARET, 0);
или
TreeView_GetSelection(hTreeCtrl);

для того чтобы получить полный путь надо сделать конкатенацию всех веток, их можна получить используя:


HTREEITEM hSelectedItem = SendMessage(hTreeCtrl, TVM_GETNEXTITEM, TVGN_PARENT, hItem);
или
TreeView_GetParent(hTreeCtrl, hItem)

вообщем у тебя должно получиться чтото типа:


BOOL TreeView_GetSelectionPath(HWND hTreeCtrl, std::string &sItemPath)
{
        HTREEITEM hItem = TreeView_GetSelection(hTreeCtrl);
        if(!hItem)
        	return FALSE;
        sItemPath = "";
        do {
        	std::string sItemText = TreeView_GetItemText(hTreeCtrl, hItem);
        	sItemPath = _T("/") + sItemText + sItemPath;
        } while(hItem = TreeView_GetParent(hTreeCtrl, hItem));
        return TRUE;
}

к этому коду надо будет добавить функцию «std: string TreeView_GetItemText (HWND hTreeCtrl, HTREEITEM hItem) {} " которая возвращает text заданного item’a.
в результате у тебя будет "/Color/red» для твоего примера.

ЗЫ. С тебя ПЯТЬ БАКСОВ; -)

Підписатись на коментарі