Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переопределение функции OnCreateClient, создание нескольких видов в документе 
:(
    Опции темы
NewLine
Дата 17.7.2006, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 19.5.2006

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



Превет.
У меня есть MDI приложение и пункт меню "New document".
Скажите пожалуйста где необходимо переопределять функцию OnCreateClient, чтобы при открытии этого документа в нем можно было просмотреть несколько View c помощью CSplitterWnd.
Спасибо. 
--------------------
Компания NewLineStudio - Разработка программного обеспеченияOn-CRM.ru - интернет CRM система
PM MAIL   Вверх
Earnest
Дата 17.7.2006, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



В наследнике MDIChildFrame - т.е. в рамке вида.

Добавлено @ 12:37 
т.е. CMDIChildWnd  


--------------------
...
PM   Вверх
NewLine
Дата 17.7.2006, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 19.5.2006

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



Теперь получается он для любого пункта меню будет открывать этот документ.   smile  
--------------------
Компания NewLineStudio - Разработка программного обеспеченияOn-CRM.ru - интернет CRM система
PM MAIL   Вверх
Earnest
Дата 17.7.2006, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Кто - он? 


--------------------
...
PM   Вверх
NewLine
Дата 17.7.2006, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 19.5.2006

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



Получается, что для любого пункта меню открывается один и тот же документ с несколькими View. 

Документ!!! 

Это сообщение отредактировал(а) NewLine - 17.7.2006, 13:45
--------------------
Компания NewLineStudio - Разработка программного обеспеченияOn-CRM.ru - интернет CRM система
PM MAIL   Вверх
Earnest
Дата 17.7.2006, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(NewLine @  17.7.2006,  14:44 Найти цитируемый пост)
Получается, что для любого пункта меню открывается один и тот же документ с несколькими View. 

Да? даже для пункта "Выход"?

И какая связь? Сплиттер нужно создавать заранее, если он вообще нужен. Но кто заставляет создавать его с несколькими панелями сразу? 

Цитата(NewLine @  17.7.2006,  14:44 Найти цитируемый пост)
Документ!!! 

Нет, не документ, а ты. smile 
Ну откуда я знаю, чего ты там напрограммировал?
 


--------------------
...
PM   Вверх
NewLine
Дата 17.7.2006, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 19.5.2006

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



У меня например есть два пункта меню "New Document" и "Second Document" и оба они вызывают виртуальную функцию OnCreateClient, которая определяет показ нескольких View.
Код

BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
{
 if(!m_wndSplitter.CreateStatic(this, 2, 1))
        return FALSE;

    if(!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(NewFormView_2), CSize(100, 300), pContext))
        return FALSE;

    if(!m_wndSplitter1.CreateStatic(&m_wndSplitter, 1, 2, WS_CHILD | WS_VISIBLE, m_wndSplitter.IdFromRowCol(1,0)))
        return FALSE;

    if(!m_wndSplitter1.CreateView(0, 0, RUNTIME_CLASS(NewFormView_2), CSize(300, 100), pContext))
        return FALSE;

    if(!m_wndSplitter1.CreateView(0, 1, RUNTIME_CLASS(NewFormView_2), CSize(300, 100), pContext))
        return FALSE;

    return TRUE;
}

А как мне сделать чтоб при выборе одного пункта меню открывался документ с несколькими View, а для другого с одним?
Спасибо.  

Это сообщение отредактировал(а) NewLine - 17.7.2006, 17:27
--------------------
Компания NewLineStudio - Разработка программного обеспеченияOn-CRM.ru - интернет CRM система
PM MAIL   Вверх
Earnest
Дата 19.7.2006, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Ну, во первых, ты каждый раз создаешь не 2 вида а больше, но неважно.
Функция OnCreateClient вызывается каждый раз, когда создается новый фрейм. По идее, задачу мог бы решить параметр, переданный в OnCreateClient, в зависимости от которого ты создаешь только одну панель или несколько. Но передать такой параметр проблематично - не предусмотрено. Можно, конечно, мудрить с внутренними переменными или статическими флагами, но это все криво. Поэтому я бы сделала так. В OnCreateClient созавать сплиттер и только одну панель. Далее, один из пунктов меню обрабатывается стандартно - OpenDocumentFile и т.д. Второй - пишешь свой обработчик, где к стандартному коду (который открывает только один вид), добавляешь свой, который создает необходимое число видов в сплиттере фрейма.
Но вообще-то более стандартный подход - когда у тебя всегда открывается один вид, а  команде меню (скажем, Split) - текущий вид расщепляется. Т.е. обработку Open оставляешь в покое, а в команде Split берешь текущий фрейм и создаешь в сплиттере необходимые панели.

Но, возможно, я тебя не поняла, и твой Second Document - это совсем другая сущность. Тогда можно просто создать 2 разных фрейма и, соответственно, 2 шаблона документа. Один пункт меню обрабатываешь с помощью одного шаблона, второй - с помощью другого.   


--------------------
...
PM   Вверх
NewLine
Дата 20.7.2006, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 19.5.2006

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



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


 




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


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

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