| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > А что делать, если MDI каркас MFC не подходит? |
| Автор: Rapalex 20.3.2006, 14:19 |
| У меня такое дело нужно написать программу, которая не совсем вписывает-ся в каркас предлагаемый FMC. 1. Мне нужно чтоб внешний вид был, как у MDI, а по факту всегда работало только с одним документом, и было запущено только один раз в системе. Проблему решил так: при открытии нового документа пребывал закрыть от-крытый документ. Остальные проблемы решать и не пришлось. 2. Есть несколько типов представлений и все они показывают определённые части документа. С этим проблем не было, я и рассказывать не буду. Проблема в том, что один вид документа должен причаливаться как ToolBar к MainFrame. И САМАЯ большая проблема в том, что при открытии документа не должно быть (или может не быть) открытых представлений документа. Это как в студии, есть выход написать “свою MFC” но мне это не нравиться. И какие есть идеи по поводу последних двух проблем? Рад буду услышать любые мысли. |
| Автор: Rapalex 21.3.2006, 15:08 |
| Так я сделал, но проблемма что документ должен существовать а представление нет. |
| Автор: Earnest 21.3.2006, 15:23 |
| 1) Документ может запросто существовать без вью и фреймов - кто мешает? Просто не надо сразу создавать фрейм и вью при загрузке. Для этого покопайся в CDocTemplate::OpenDocumentFile - она виртуальная, там можно помудрить. 2) Еще придется докрутить закрытие видов: при закрытии последнего документ в стандартном случае закрывается, а тебе ведь надо оставить его открытым до явного закрытия Так что я бы сделала по другому: Поскольку документ один и тип у него тоже один - я бы написала свой менеджер - да хоть бы простейшую глобальную переменную. И, конечно, нужно переписать обработчик OnFileNew. А вот MDI-темплэйты я бы использовала для различных видов этого документа, представив показываемые там части как псевдо-документы (которые не надо загружать-выгружать с диска, а надо брать от глобального загруженного документа). |
| Автор: Rapalex 22.3.2006, 17:02 | ||
Earnest, так та оно так НО в InitInstance() есть строки:
и что мне с ними делать. Они нужны но CJustChildFrame и CJustView нужно указывать, а при запуске приложения они создадк=уться как бы я этого не хотел. |
| Автор: Earnest 22.3.2006, 18:11 |
| 1) Во первых - что значит "нужны"? Зачем тебе темплэйт, если ни фрейс ни вью к нему не прилагается? Основная задача DocTemplate - это как раз связь между документом и его видами. 2) Во-вторых, если все-таки нужно зачем-нибудь (ну там строки из ресурсов загрузить) CJustChildFrame и CJustView можно заменить нулями. Конечно, тогда придется кое-где подкрутить. Скорее всего, в OpenDocumeтеFile. |