![]() |
|
![]() ![]() ![]() |
|
Rapalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 732 Регистрация: 20.1.2006 Где: Украина -> Ник олаев Репутация: 6 Всего: 8 |
У меня такое дело нужно написать программу, которая не совсем вписывает-ся в каркас предлагаемый FMC.
1. Мне нужно чтоб внешний вид был, как у MDI, а по факту всегда работало только с одним документом, и было запущено только один раз в системе. Проблему решил так: при открытии нового документа пребывал закрыть от-крытый документ. Остальные проблемы решать и не пришлось. 2. Есть несколько типов представлений и все они показывают определённые части документа. С этим проблем не было, я и рассказывать не буду. Проблема в том, что один вид документа должен причаливаться как ToolBar к MainFrame. И САМАЯ большая проблема в том, что при открытии документа не должно быть (или может не быть) открытых представлений документа. Это как в студии, есть выход написать “свою MFC” но мне это не нравиться. И какие есть идеи по поводу последних двух проблем? Рад буду услышать любые мысли. -------------------- In vitium ducit culpae fuga. Желание избежать ошибки вовлекает в другую. (Horatius) |
|||
|
||||
Бугемот |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 27.12.2005 Репутация: 1 Всего: 1 |
В классе Вашего приложения (CYourApp) найдите строку: ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew) и замените на ON_COMMAND(ID_FILE_NEW, OnFileNew) Естественно, метод OnFileNew должен быть перегружен void CYourApp::OnFileNew() { }
в сети куча бесплатных подобных штук. Если этот вид нужен для контролов, посмотрите в сторону CDialogBar. |
|||
|
||||
Rapalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 732 Регистрация: 20.1.2006 Где: Украина -> Ник олаев Репутация: 6 Всего: 8 |
Так я сделал, но проблемма что документ должен существовать а представление нет.
-------------------- In vitium ducit culpae fuga. Желание избежать ошибки вовлекает в другую. (Horatius) |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
1) Документ может запросто существовать без вью и фреймов - кто мешает? Просто не надо сразу создавать фрейм и вью при загрузке. Для этого покопайся в CDocTemplate::OpenDocumentFile - она виртуальная, там можно помудрить.
2) Еще придется докрутить закрытие видов: при закрытии последнего документ в стандартном случае закрывается, а тебе ведь надо оставить его открытым до явного закрытия Так что я бы сделала по другому: Поскольку документ один и тип у него тоже один - я бы написала свой менеджер - да хоть бы простейшую глобальную переменную. И, конечно, нужно переписать обработчик OnFileNew. А вот MDI-темплэйты я бы использовала для различных видов этого документа, представив показываемые там части как псевдо-документы (которые не надо загружать-выгружать с диска, а надо брать от глобального загруженного документа). -------------------- ... |
|||
|
||||
Rapalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 732 Регистрация: 20.1.2006 Где: Украина -> Ник олаев Репутация: 6 Всего: 8 |
Earnest, так та оно так НО в InitInstance() есть строки:
и что мне с ними делать. Они нужны но CJustChildFrame и CJustView нужно указывать, а при запуске приложения они создадк=уться как бы я этого не хотел. -------------------- In vitium ducit culpae fuga. Желание избежать ошибки вовлекает в другую. (Horatius) |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
1) Во первых - что значит "нужны"? Зачем тебе темплэйт, если ни фрейс ни вью к нему не прилагается? Основная задача DocTemplate - это как раз связь между документом и его видами.
2) Во-вторых, если все-таки нужно зачем-нибудь (ну там строки из ресурсов загрузить) CJustChildFrame и CJustView можно заменить нулями. Конечно, тогда придется кое-где подкрутить. Скорее всего, в OpenDocumeтеFile. -------------------- ... |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |