Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Дерево, дерево...

3.8K
09 ноября 2004 года
hex
58 / / 31.10.2004
Как в CTreeView создать нормальное дерево с некоторіми пунктами и как во время віполнения проги добавлять пункты в дерево тоестьнасколько я понимаю динамически....? ПОЖАЛУЙСТА ПРИМЕРЧИК а то я лам напишу и ниче не работает впрочем как всегда :(
1.6K
10 ноября 2004 года
GDragon
67 / / 11.10.2002
Создаешь в ресурсах картинку размером 16х(16*кол-во иконок) - это будут иконки для дерева, потом делаешь так:
cTreeImageList.Create(IDB_TREEICONS, 16, 5, RGB(0, 0, 255));
cTreeImageList - это CImageList объяви его где-нибудь в классе главного окна, чтобы не пропал;
IDB_TREEICONS - индекс картинки в ресурсах;
16 - высота иконки;
5 - количество иконок в картинке;
RGB(0, 0, 255) - это "прозрачный" цвет.
Эти параметры, у тебя, разумеется, будут свои.
Дальше
MyTree.SetImageList(&cTreeImageList, TVSIL_NORMAL);
Объявил картинки для дерева.
Делаем корень:
HTREEITEM hRoot = MyTree.InsertItem(_T("Root"), 0, 0);
0,0 - это индекс иконок. Первый индекс - иконка невыбранного пункта, второй - выбранного. Если они разные, то при клике на пункт иконки будут автоматически меняться.
Дальше, если нужно добавить веточку к hRoot делай так:
HTREEITEM hBranch1 = MyTree.InsertItem(_T("Branch1"), 1, 1, hRoot);
Если веточку к этой веточке, то соответственно
HTREEITEM hBranch2 = MyTree.InsertItem(_T("Branch2"), 2, 2, hBranch1);
Остальное см. в MSDN.
После того, как TreeCtrl создан, не важно, из какой части программы ты будешь добавлять ветки, сразу, или по мере выполнения программы.
3.8K
11 ноября 2004 года
hex
58 / / 31.10.2004
Цитата:
Originally posted by GDragon
Создаешь в ресурсах картинку размером 16х(16*кол-во иконок) - это будут иконки для дерева, потом делаешь так:
cTreeImageList.Create(IDB_TREEICONS, 16, 5, RGB(0, 0, 255));
cTreeImageList - это CImageList объяви его где-нибудь в классе главного окна, чтобы не пропал;
IDB_TREEICONS - индекс картинки в ресурсах;
16 - высота иконки;
5 - количество иконок в картинке;
RGB(0, 0, 255) - это "прозрачный" цвет.
Эти параметры, у тебя, разумеется, будут свои.
Дальше
MyTree.SetImageList(&cTreeImageList, TVSIL_NORMAL);
Объявил картинки для дерева.
Делаем корень:
HTREEITEM hRoot = MyTree.InsertItem(_T("Root"), 0, 0);
0,0 - это индекс иконок. Первый индекс - иконка невыбранного пункта, второй - выбранного. Если они разные, то при клике на пункт иконки будут автоматически меняться.
Дальше, если нужно добавить веточку к hRoot делай так:
HTREEITEM hBranch1 = MyTree.InsertItem(_T("Branch1"), 1, 1, hRoot);
Если веточку к этой веточке, то соответственно
HTREEITEM hBranch2 = MyTree.InsertItem(_T("Branch2"), 2, 2, hBranch1);
Остальное см. в MSDN.
После того, как TreeCtrl создан, не важно, из какой части программы ты будешь добавлять ветки, сразу, или по мере выполнения программы.

что то не получаеться я имею ввиду не контрол на форме а вот когда мастером создаешьи вібираешь стиль Windows Explorer или как то там ну вобщем оно разбивает документ на 2 рамки и левая рамка у нее класс CTreeView а если TreeView то логично что она дерево должна показівать ... вот... :\

3.7K
12 ноября 2004 года
Techtor
43 / / 12.09.2004
Цитата:
Originally posted by hex
Как в CTreeView создать нормальное дерево с некоторіми пунктами и как во время віполнения проги добавлять пункты в дерево тоестьнасколько я понимаю динамически....? ПОЖАЛУЙСТА ПРИМЕРЧИК а то я лам напишу и ниче не работает впрочем как всегда :(



Тема довольно большая, так что смотри тут:

www.firststeps.ru/mfc/steps/r.php?53
www.firststeps.ru/mfc/steps/r.php?174
www.firststeps.ru/mfc/steps/r.php?175
www.firststeps.ru/mfc/steps/r.php?177

1.6K
12 ноября 2004 года
GDragon
67 / / 11.10.2002
Цитата:
Originally posted by hex
что то не получаеться я имею ввиду не контрол на форме а вот когда мастером создаешьи вібираешь стиль Windows Explorer или как то там ну вобщем оно разбивает документ на 2 рамки и левая рамка у нее класс CTreeView а если TreeView то логично что она дерево должна показівать ... вот... :\


Че-то я туго понял, что и чем там у тебя создается. В любом случае вновь созданное окно дерева выглядит как белый лист, вносить туда пункты и подпункты - дело программера. Попробуй сразу после создания окна дерева сделать MyTreeCtrl.InsertItem("My first item") и посмотреть, что получится.

3.8K
12 ноября 2004 года
hex
58 / / 31.10.2004
Цитата:
Originally posted by GDragon

Че-то я туго понял, что и чем там у тебя создается. В любом случае вновь созданное окно дерева выглядит как белый лист, вносить туда пункты и подпункты - дело программера. Попробуй сразу после создания окна дерева сделать MyTreeCtrl.InsertItem("My first item") и посмотреть, что получится.

вобщем открой стандартній проводник и с лева будет дерево ВОТ ТО что я хочу только когда Wizard'om создаешь и включаешь флажок Windows Explorer View или как то так то создаеться наподобие такого только БЕЗ ДЕРЕВА просто разделитель появляеться....

3.8K
12 ноября 2004 года
hex
58 / / 31.10.2004
Цитата:
Originally posted by Techtor


Тема довольно большая, так что смотри тут:

www.firststeps.ru/mfc/steps/r.php?53
www.firststeps.ru/mfc/steps/r.php?174
www.firststeps.ru/mfc/steps/r.php?175
www.firststeps.ru/mfc/steps/r.php?177

я говрю не о контроле который помещаеться на форму а о ВИДЕ тоесть CTreeView также как и другие как CView, CEditView...

1.6K
12 ноября 2004 года
GDragon
67 / / 11.10.2002
Цитата:
Originally posted by hex
вобщем открой стандартній проводник и с лева будет дерево ВОТ ТО что я хочу только когда Wizard'om создаешь и включаешь флажок Windows Explorer View или как то так то создаеться наподобие такого только БЕЗ ДЕРЕВА просто разделитель появляеться....


Понятно. Дело в том, что стиль IE не подразумевает добавления дерева каталогов. Поинтересуйся, как подключить и отобразить COM-объект Explorer-а.

3.8K
12 ноября 2004 года
hex
58 / / 31.10.2004
Цитата:
Originally posted by GDragon

Понятно. Дело в том, что стиль IE не подразумевает добавления дерева каталогов. Поинтересуйся, как подключить и отобразить COM-объект Explorer-а.

а попроще никак незя а то я ваше ламобот в этом деле....???

1.6K
15 ноября 2004 года
GDragon
67 / / 11.10.2002
Цитата:
Originally posted by hex
а попроще никак незя а то я ваше ламобот в этом деле....???


Боюсь, что нет. Если ищешь легкой жизни, попробуй заюзать CBuilder и поискать готовый компонент. Если найдешь, кидай на форму и дело в шляпе :)

3.8K
25 ноября 2004 года
hex
58 / / 31.10.2004
Цитата:
Originally posted by GDragon

Боюсь, что нет. Если ищешь легкой жизни, попробуй заюзать CBuilder и поискать готовый компонент. Если найдешь, кидай на форму и дело в шляпе :)

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

1.6K
26 ноября 2004 года
GDragon
67 / / 11.10.2002
Цитата:
Originally posted by hex
эх ... тогда можешь расссказать поподробнее или сссылочку по этому поводу дать??


Увы. Никогда не возникало необходимости. Один раз понадобилось меню для выбора папки, ну так я его ручками слабал. Но это далеко до Проводника, показывает только папки, операций с файлами не поддерживает.
Пошарься по Инету, зайди на http://msdn.microsoft.com/visualc/community/ - хороший ресурс, но англоязычный.

3.8K
27 ноября 2004 года
hex
58 / / 31.10.2004
Цитата:
Originally posted by GDragon

Увы. Никогда не возникало необходимости. Один раз понадобилось меню для выбора папки, ну так я его ручками слабал. Но это далеко до Проводника, показывает только папки, операций с файлами не поддерживает.
Пошарься по Инету, зайди на http://msdn.microsoft.com/visualc/community/ - хороший ресурс, но англоязычный.

а если сделать из этого вида FormView и кинуть туда просто контрол дерева...

1.6K
29 ноября 2004 года
GDragon
67 / / 11.10.2002
Цитата:
Originally posted by hex
а если сделать из этого вида FormView и кинуть туда просто контрол дерева...


В данном конкретном случае лучше было бы использовать CSplitterWnd. Да вообще контрол на окно выкинуть не проблема. Проблема его заполнить.

3.8K
29 ноября 2004 года
hex
58 / / 31.10.2004
Цитата:
Originally posted by GDragon

В данном конкретном случае лучше было бы использовать CSplitterWnd. Да вообще контрол на окно выкинуть не проблема. Проблема его заполнить.

ну у меня уже есть сам разделиткль который делит вид пополам ...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог