![]() |
|
![]() ![]() ![]() |
|
OverBug |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 13.4.2006 Где: г.Пенза, Пензенск ой обл. Репутация: нет Всего: 1 |
Возможно ли так сделать?
Есть MDI проект. В нем одно Doc/View представление. Добавил еще один View и нужно его привязать к существующему Doc, причем Parent у этого View является ControlBar (вернее унаследованный от него класс). Т.е. надо в MDI приложении создать Doc/2View. Не знаю как лучше это сделать. Сначала хотел для второго View использовать DDX, но он вроде-бы работает с классами на основе CDialog. Или
Впринципе, все это для того, чтобы обмениватся данными этому Доку еще с View. Может есть другой способ? |
|||
|
||||
Dray |
|
|||
![]() Материалист ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 7.10.2003 Где: г. Всеволожск Репутация: 2 Всего: 6 |
||||
|
||||
Autumn |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 3.4.2006 Репутация: нет Всего: нет |
Так можно работать с любым классом, производным от Cwnd, а не только с диалогом. Просто это чаще используется при работе с блоками диалога
|
|||
|
||||
OverBug |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 13.4.2006 Где: г.Пенза, Пензенск ой обл. Репутация: нет Всего: 1 |
Coocky
в поиске на эту тему ничего нету. Современный интерфейс - ШАГ ПЕРВЫЙ тоже нет. Продолжение не могу найти. LexaK,
![]() Мне хотя-бы маленькийпример того как к существующему Доку привязать существующий Вьюв. Но...
|
||||||
|
|||||||
Earnest |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
У документа есть метод AddView... Но тогда непонятно, зачем тебе создавать template, если ты все руками делаешь... Если есть шаблон, то для открытия нового вида заданного типа можно использовать его ф-ю CreateNewFrame...
Лучше бы вложить внутрь ControlBar фрейм, а уже в него - вью. Во-первых, см. выше (сможешь использовать имеющиеся функции), а во-вторых - вью в некоторых местах очень хочет, чтобы парентом был именно фрейм. Заткнуть это можно, но нужно ли? Разумеется, фрейм лучше написать тоже свой... -------------------- ... |
||||
|
|||||
OverBug |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 13.4.2006 Где: г.Пенза, Пензенск ой обл. Репутация: нет Всего: 1 |
С этим проблем нет, я использую CSizingControlBar(спасибо CptainFlint).
Сам вью создается при создании гланого окна, когда создаются статус, управления и контрол бары, вызовом метода Create и привязывается к ContolBar. Возникла проблема отображения в нем данных из других классов. Ничего кроме как привязать к нему документ не придумал, да и ктомуже это удобнее... но конкретно как? |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
-------------------- ... |
|||
|
||||
OverBug |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 13.4.2006 Где: г.Пенза, Пензенск ой обл. Репутация: нет Всего: 1 |
После добавления этого вью, при создании документа когда будет создаваться добавленный вью? Т.е. Есть чилд вью+документ, добавлю к нему свой вью (кстати когда и где лучше это сделать), при создании чилда, добаленный вью создатся сразу или его нужно создать?
|
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Никогда он сам не будет создаваться. Ты обязан сам его ручками создать, и только потом добавить. Вью в списке документа должны быть валидными.
Когда делать, зависит от задачи. Если в панели только один такой вью, то логичнее всего - когда создаешь панель. А если несколько (например, для каждого документа создается закладка или просто страница) - то при загрузке документа. Кстати, имей в виду, что стандартный механизм МФЦ закрывает (выгружает) документ, когда закрывается его последний вью. Но это только если вью живет в стандартном фрейме. В твоем случае, тебе придется вручную проверять, что остался только вью в панели, и закрывать документ принудительно. Добавлено @ 08:16
Между прочим, это не самый лучший метод, ИМХО. Т.е. я тоже когда-то так делала - чтобы работал механизм CDocument::UpdateAllViews и автоматически отображались изменения. Но столкнулась с необходимостью заката солнца вручную (насчет закрытия документа). Потом просто сделала свой параллельный механизм событий без привязки к MFC-архитектуре. Т.е. документ (или кто там еще) просто генерирует событие определенного типа, а любой, кто хочет, на него реагирует. Свой механизм можно сделать более гибким (с учетом потоков и прочего), а с MFC он будет сосуществовать мирно. Так что подумай. -------------------- ... |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |