Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите спроектировать, прога с несколькими документами 
:(
    Опции темы
Dray
Дата 29.11.2005, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Материалист
**


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

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



Требуется написать программу, которая работает с файлами одного типа (А). Но нужно, чтобы она работала еще с файлом типа проекта (В), в котором описывается структура и количество файлов типа (В). Что-то вроде как Visual C++ работает с файлами исходников, ресурсов и имеет файл проекта (dsw), в котором описаны связи между всеми файлами проекта.
В моей программе пользователь должен сначало создать проект (тип В), а потом добавлять файлы (тип А) в проект.
Я так решил что для файлов типа (А) будет отдельный документ от CDocument. А вот для файла типа (B) как лучше организовать это? Тоже отдельный документ? Посоветуйте.



--------------------
忍者

user posted image
PM MAIL   Вверх
Earnest
Дата 30.11.2005, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Да, использовать в качестве базы CDocument будет проще всего - т.к. наследование от CDocument тебя ни к чему не обязывает, а просто дает готовый механизм сериализации и некоторые другие механизмы, которые ты можешь использовать, а можешь игнорировать. В том смысле, что реализовать отображение и прочую работу с этим документом ты можешь как угодно - например, как в том же Visual, в виде панели со структурой твоего "проекта". Т.е. с точки зрения документов A твое приложение будет MDI, а вот документ B - только один в сессии. Если взаимоотношение между документами похоже на отношение проект-исходники в Вижуал, не ломай голову, а делай дизайн аналогично.



--------------------
...
PM   Вверх
Dray
Дата 30.11.2005, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Материалист
**


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

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



Спасибо за совет, тепрь всё немного уложилось в голове. Только остается ещё пара вопросов. Если использовать два типа документов (CDocument), то нужно наверное два шаблона? Для типа (А) все понятно - CMultiDocTemplate, а вот для типа (B) - проекта? С начало подумал создать второй шаблон - CSingleDocTemplate, но приложение то MDI. К тому же шаблон требует класс вида и класс фрейма, а для проекта (B) взаимодействие с пользователем происходит через диалогбар на котором только контрол-дерево (CTreeCtrl) почти как в Visual, никакого вида, рамки и ресурсов нету. По эксперементировал я с несколькими шаблонами Single и Multi и кроме exception'ов ничего не получил. У кого есть опыт в создании такого рода интерфейса раскажите как делается это в целом.

P. S. Просо я первый раз с этим столкнулся. Задание такое по практике в учебном заведении.


--------------------
忍者

user posted image
PM MAIL   Вверх
Earnest
Дата 1.12.2005, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Шаблон обязателен, только если ты будешь использовать создание видов через FrameWork. В других случаях можно обойтись.
Однако шаблоны - полезная часть оболочки. Например, хранение и доступ ко всем открытым документам. Еще стандартная реализация File->Open) по списку шаблонов формирует определяет, какой документ загружать. И прочая...

Я бы шаблон использовала: свой класс, унаследовать конечно от MultiDocTemplate,
в качестве классов фрейма-вида подсунуть 0.
Это нестандартное использование, поэтому кое-что придется подкрутить:
все функции, где вылетает ASSERT.

Цитата(Dray @ 30.11.2005, 22:14)
По эксперементировал я с несколькими шаблонами Single и Multi и кроме exception'ов ничего не получил

Single не подходит однозначно, с Multi должны быть не исключения, а ASSERT'ы. С ними см. выше.

Заодно в MFC разберешься: нет лучше способа изучить библиотеку, чем заставить ее работать не совсем стандартно.





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


 




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


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

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