Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как определить итем в CTreeCtrl, на котором нажали, Как определить итем в CTreeCtrl, на кото 
V
    Опции темы
Earnest
Дата 4.4.2007, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Наверное все же основное время занимает прохождение по файловой системе (а то и по удаленным компам)...
Я бы отделила построение дерева файлов от заполнения дерева-контрола. Скажем, построение файлового дерева засунуть в поток, построение удаленных веток действительно отложить on-demand, пока не понадобятся, а контрол обновлять, ну скажем по таймеру, пока изменения не прекратяться.
Это и с точки зрения дизайна лучше: разные задачи - разный код, и гибче.

Цитата(CityAC @  4.4.2007,  23:33 Найти цитируемый пост)
можно прислать на разбор? 

Нет, извини, код твой смотреть не буду, это слишком много времени съест. Но если есть желание, почему бы не выложить, может народ что посоветует.



--------------------
...
PM   Вверх
CityAC
Дата 11.4.2007, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 3.11.2006
Где: Украина Горловка

Репутация: 1
Всего: 1



Есть ли возможность в узле дерева хранить полный путь к нему?
--------------------
Вижу цель, не вижу припятствий.  
PM MAIL ICQ   Вверх
Earnest
Дата 11.4.2007, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



О каком дереве ты говоришь? Если о TreeCtrl, то это никому не нужно - путь легко восстанавливается посхождением вверх - по парентам. Если о собственной структуре - то же самое. Типичный узел дерева кроме ссылок на  потомков обычно хранит ссылку на парента, по которым и можно восстановить весь путь.
Хранение всего пути в каждом узле явно избыточно и мешает гибкости. Например, при перемещении узла по дереву ...


--------------------
...
PM   Вверх
CityAC
Дата 11.4.2007, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 3.11.2006
Где: Украина Горловка

Репутация: 1
Всего: 1



Цитата

О каком дереве ты говоришь? Если о TreeCtrl, то это никому не нужно - путь легко восстанавливается посхождением вверх - по парентам

Да я так и реализовывал, но думал что есть возможность хранить весь путь
--------------------
Вижу цель, не вижу припятствий.  
PM MAIL ICQ   Вверх
Greeen
Дата 11.4.2007, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 710
Регистрация: 13.8.2006
Где: Петербург

Репутация: 10
Всего: 18



Возможность есть, но нет необходимости. Если все же уж очень приспичит то SetItemData(HTREEITEM hItem, DWORD_PTR dwData); Передашь указатель на сроку с полным путем.


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
Earnest
Дата 11.4.2007, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Только эти указатели кто-то менеджить должен (создавать, хранить, уничтожать) - дерево за тебя это делать не будет.


--------------------
...
PM   Вверх
CityAC
Дата 12.4.2007, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 3.11.2006
Где: Украина Горловка

Репутация: 1
Всего: 1



Всем спасибо!!!
Более менее разобрался
Хранить полное имя действительно нет необходимости
получал имя узла так
Код

CString CprojDlg::MyGetPathName(HTREEITEM parItem)
{
    CString rootItemName = m_TreeCtrl.GetItemText( m_TreeCtrl.GetRootItem());
    m_fullName="";
    while(m_TreeCtrl.GetItemText(parItem)!=rootItemName)
    {
        m_fullName = m_TreeCtrl.GetItemText(parItem) +"\\" + m_fullName  ;
        if(!(parItem = m_TreeCtrl.GetParentItem (parItem)))
            return m_fullName;
    }
    if(m_fullName.Right(1)!="\\" && m_fullName!="")
                m_fullName+="\\";
    return m_fullName;
}


--------------------
Вижу цель, не вижу припятствий.  
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0466 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.