0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 3

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

06.09.2011, 10:44. Показов 3419. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru