Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/16: Рейтинг темы: голосов - 16, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 3

CTreeView в MDI приложении.

06.09.2011, 10:44. Показов 3417. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе утро. Вообще в работе дел с MFC как правило не имею,чаще Win API ,системное. А тут вдруг попалась следующая задачка ,время поджимает. В общем условия:
Необходимо создать MDI проект MFC среда - Visual Studio 2005 . В основном окне слева как в explorer.exe размещаются
CTreeView,содержащий определенную информацию,в оставшемся пространстве размешаются обычные
MDI окна. На апи все просто - регаешь класс для дерева и создаешь его окно как дочернее по отношению к основному,а здесь что-то не врубаюсь. Необходимо чтобы окно дерева не перекрывалось окнами MDI.
Где лучше разместить сам класс CTreeView - в CDocument,CView или CMainFrame?

Добавлено через 11 минут
Да,еще ,функции CTreeView::Create и CTreeView::CreateEx принимают ID контрола. А если у меня не диалоговое окно,а обычное и я не могу помещать
на него контролы?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.09.2011, 10:44
Ответы с готовыми решениями:

Где можно взять пример работы с CTreeView?
Где можно взять пример работы с CTreeView?

Затемнение в MDI приложении
Доброго дня! Искал недавно варианты затемнения формы со всеми компонентами с отображением прогрессбара в процессе выполнения каких либо...

MainMenu в MDI-приложении
В новом проекте, создаю 3 формы. Затем на каждую из них кидаю компонент MainMenu.После задаю в нём пункты. Запускаю, как видно, всё...

14
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
06.09.2011, 10:57
Могу помочь с MFC если именно такое надо?
Миниатюры
CTreeView в MDI приложении.  
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
06.09.2011, 10:58
PS:Если оно - пиши, выложу код...
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
06.09.2011, 11:15
Цитата Сообщение от asm_Coder Посмотреть сообщение
принимают ID контрола. А если у меня не диалоговое окно,а обычное и я не могу помещать на него контролы?
Задай любой удобный тебе ID. Контролы можно размещать в любых окнах.
0
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 3
06.09.2011, 12:03  [ТС]
-=ЮрА=-,
Выкладывай,буду благодарен.
Deviaphan,
Как ? Обычно контролы на диалоговые окошки лепят.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
06.09.2011, 12:09
Цитата Сообщение от asm_Coder Посмотреть сообщение
Выкладывай,буду благодарен.
- лови пример работы - там и цвет шрифта и фон и ImageLict c иконками. PS:Можно работать с деревом и круче это лишь простенький пример
Вложения
Тип файла: rar TreeCtrlTest.rar (16.4 Кб, 89 просмотров)
2
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
06.09.2011, 12:12
PS: В предыдущем проекте - примитив, впринципе могу и такое как на миниатюре выложить + там ещё и дерево прилеплю, но хочу чтобы сначала с простым проектом разобрался
Миниатюры
CTreeView в MDI приложении.  
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
06.09.2011, 12:39
Цитата Сообщение от asm_Coder Посмотреть сообщение
Как ? Обычно контролы на диалоговые окошки лепят
Обычно - да. Но ведь ты про метод Create спрашиваешь, а с его помощью можно хоть куда лепить. Контролы унаследованы от CWnd, соответственно лепи куда хошь.

Добавлено через 6 минут
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
В предыдущем проекте
Судя по миниатюрам, это SDI.

Цитата Сообщение от asm_Coder Посмотреть сообщение
Где лучше разместить сам класс CTreeView - в CDocument,CView или CMainFrame?
Точно не в документе. Отсюда вопрос: какая информация будет в дереве? Связанная с активным документом или не зависищая от активного документа?
В CView тоже не надо. У тебя же не контрол, а уже окно CTreeView.
А вот как сделать, чтобы не перекрывалось я даже сразу и не скажу. Если решать по ламерски в лоб, то можешь просто запретить окна туда перемещать. Как правильно - не знаю.
0
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 3
06.09.2011, 18:09  [ТС]
В общем в дереве инфа связанная с файлами. Щелкаешь по узлу - в новом окошке открывается соответствующий документ или инфа,связанная с ним. Нужно создать разные документы - на основе
например того же CTreeView. А при попытке создать это окошко дедовским методом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
hTree = ::CreateWindowEx(NULL,
                           L"SysTreeView32",
                           NULL,
                           WS_CHILD|WS_VISIBLE|TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT,
                           0,
                           0,
                           200,
                           400,
                           lpCreateStruct->hwndParent,
                           NULL,
                           NULL,
                           NULL);
    if(!hTree)
    {
        char* Buffer = new char[100];
        wsprintfA(Buffer,"%s%d\n","Error is ",::GetLastError());
        ::MessageBoxA(NULL,Buffer,NULL,MB_OK);
        delete Buffer;
    }
Получаю
C++
1
2
ERROR_TLW_WITH_WSCHILD
1406 Cannot create a top-level child window.
. Хз почему. Сейчас еще через класс MFC-шный попробую.

Добавлено через 33 минуты
C++
1
2
3
4
5
6
7
if(!view.Create(WS_CHILD|WS_VISIBLE|TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT,
               rect1,
               this,
               ID_NEWTREE))
               AfxMessageBox((LPCTSTR)L"Error");
else
               AfxMessageBox((LPCTSTR)L"Success");
Этот код верно выполняется в CMainFrame::OnCreate,однако окна не видно.

Добавлено через 3 часа 40 минут
Вот еще вопрос. Если часть документов нужно отображать в CTreeView а часть в CListView
как это можно устроить?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
07.09.2011, 11:46
asm_Coder, вот здесь лежит готовый MFC проект с полностью функциональным деревом Реестр и visual c++
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
07.09.2011, 11:55
Цитата Сообщение от asm_Coder Посмотреть сообщение
Если часть документов нужно отображать в CTreeView а часть в CListView
как это можно устроить?
Можно. По памяти не напишу как. Зарегистрировать типы документов нужно и ещё что-то... В примерах MSDN есть такой проект, но там не молчком открывается, а показывает стандартный диалог, для выбора типа окна.
Ну и, конечно, реализация будет зависеть от того, для разных типов документов разные окна открывать или для одного типа.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
07.09.2011, 12:03
Цитата Сообщение от Deviaphan Посмотреть сообщение
Можно. По памяти не напишу как. Зарегистрировать типы документов нужно и ещё что-то...
- что-то я не понял о чём это? Скомпилируй проект в моём пердыдущем посте, вот готовый экзешник и скриншот
Миниатюры
CTreeView в MDI приложении.  
Вложения
Тип файла: rar RegView.exe.rar (20.0 Кб, 15 просмотров)
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
07.09.2011, 12:11
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- что-то я не понял о чём это?
Много-оконное и много-документное приложение это разные словосочетания.
Вот, например MSVC это много-документное приложение.
Кстати в MSVC2010 мастер умеет создавать приложения по типу студии, как раз и дерево и многодокументность...
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
07.09.2011, 12:30
Цитата Сообщение от Deviaphan Посмотреть сообщение
Много-оконное и много-документное приложение это разные словосочетания.
Вот, например MSVC это много-документное приложение.
Кстати в MSVC2010 мастер умеет создавать приложения по типу студии, как раз и дерево и многодокументность...
- думаю что, в задании ТС идёт речь именно о TreeCtrl + ListCtrl, аля вид папки проводника, а не многодокументный MDI

Цитата Сообщение от asm_Coder Посмотреть сообщение
В основном окне слева как в explorer.exe размещаются
CTreeView,содержащий определенную информацию.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
07.09.2011, 12:35
Я исходил из предположения, что ТС умеет различать единственное и множественное и знает различие между SDI и MDI.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.09.2011, 12:35
Помогаю со студенческими работами здесь

Окна в MDI приложении.
Несколько вопросов в приложении MDI есть несколько child окон. 1) Надо сделать чтобы одно из них всегда было выше других (не...

DBLookupComboBox в MDI приложении
Здравствуйте! Создаю простую базу данных в виде MDI приложении. Есть дочернее окно с таблице в которой список товаров. Три колонки...

Баг в MDI приложении
Создал MDI-приложение. Положил на дочернюю форму ValueListEditor... После запуска, если щелкнуть по левой кнопке мыши в область этого...

Один ToolBar в MDI приложении
Добрый день. Подскажите где почитать или подскажите: Создаю MDI-приложение в котором на главной форме размещены ToolBar-ы с...

Открытие файлов в MDI приложении
Сделал многооконный текстовый редактор. Остался недоделанным пункт открытия текста в отдельном дочернем окне. Открываться они должны при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru