![]() |
|
|
![]()
|
|
| Dray |
|
|||
![]() Материалист ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 7.10.2003 Где: г. Всеволожск Репутация: 2 Всего: 6 |
Требуется написать программу, которая работает с файлами одного типа (А). Но нужно, чтобы она работала еще с файлом типа проекта (В), в котором описывается структура и количество файлов типа (В). Что-то вроде как Visual C++ работает с файлами исходников, ресурсов и имеет файл проекта (dsw), в котором описаны связи между всеми файлами проекта.
В моей программе пользователь должен сначало создать проект (тип В), а потом добавлять файлы (тип А) в проект. Я так решил что для файлов типа (А) будет отдельный документ от CDocument. А вот для файла типа (B) как лучше организовать это? Тоже отдельный документ? Посоветуйте. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Да, использовать в качестве базы CDocument будет проще всего - т.к. наследование от CDocument тебя ни к чему не обязывает, а просто дает готовый механизм сериализации и некоторые другие механизмы, которые ты можешь использовать, а можешь игнорировать. В том смысле, что реализовать отображение и прочую работу с этим документом ты можешь как угодно - например, как в том же Visual, в виде панели со структурой твоего "проекта". Т.е. с точки зрения документов A твое приложение будет MDI, а вот документ B - только один в сессии. Если взаимоотношение между документами похоже на отношение проект-исходники в Вижуал, не ломай голову, а делай дизайн аналогично.
-------------------- ... |
|||
|
||||
| Dray |
|
|||
![]() Материалист ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 7.10.2003 Где: г. Всеволожск Репутация: 2 Всего: 6 |
Спасибо за совет, тепрь всё немного уложилось в голове. Только остается ещё пара вопросов. Если использовать два типа документов (CDocument), то нужно наверное два шаблона? Для типа (А) все понятно - CMultiDocTemplate, а вот для типа (B) - проекта? С начало подумал создать второй шаблон - CSingleDocTemplate, но приложение то MDI. К тому же шаблон требует класс вида и класс фрейма, а для проекта (B) взаимодействие с пользователем происходит через диалогбар на котором только контрол-дерево (CTreeCtrl) почти как в Visual, никакого вида, рамки и ресурсов нету. По эксперементировал я с несколькими шаблонами Single и Multi и кроме exception'ов ничего не получил. У кого есть опыт в создании такого рода интерфейса раскажите как делается это в целом.
P. S. Просо я первый раз с этим столкнулся. Задание такое по практике в учебном заведении. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Шаблон обязателен, только если ты будешь использовать создание видов через FrameWork. В других случаях можно обойтись.
Однако шаблоны - полезная часть оболочки. Например, хранение и доступ ко всем открытым документам. Еще стандартная реализация File->Open) по списку шаблонов формирует определяет, какой документ загружать. И прочая... Я бы шаблон использовала: свой класс, унаследовать конечно от MultiDocTemplate, в качестве классов фрейма-вида подсунуть 0. Это нестандартное использование, поэтому кое-что придется подкрутить: все функции, где вылетает ASSERT.
Single не подходит однозначно, с Multi должны быть не исключения, а ASSERT'ы. С ними см. выше. Заодно в MFC разберешься: нет лучше способа изучить библиотеку, чем заставить ее работать не совсем стандартно. -------------------- ... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |