Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Помогите с documen/view - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как получить время с интернета? http://www.cyberforum.ru/cpp-beginners/thread487941.html
Объясните, как получить время из нета.. если можно, то укажите IP адрес, который необходим
C++ Как решить проблему fast drawing в borlandc 3.1 ? Как решить проблему fast drawing в borlandc 3.1 ? http://www.cyberforum.ru/cpp-beginners/thread487931.html
Локализация(интеренационализация) приложения VC++ C++
Извиняюсь за столь примитивный вопрос, но все таки может кто-то просветит как это сделать. В MSDN нашел как это делать только через DLL, но так не очень нравится. Хотелось бы что бы все ресурсы(в...
C++ Народ, кто шарит в клиент-сервер приложениях, ХЕЛП!!!
Привет всем! Народ выручайте плиз, начальство поставило задачу и сказало в течении недели ее выполнить! Суть задачи вот в чем: Есть машина в сети под управлением Windows 98, к COM портам этой машины...
C++ Синхронизация системного времене http://www.cyberforum.ru/cpp-beginners/thread487774.html
Кто-нибудь может подсказать как программно синхронизировать системное время с каким нибудь сервером(напр. time.windows.com); или просто получить от него(сервера) точное текущее время.
C++ Оставляю ссылку на книги по C++ http://anatolix.naumen.ru/books.htm - неплохой сборник книг. Если кто еще знает, какие-нить сайты с книгами, оставляйте тут. Думаю так будет всем удобно и приятно...:) подробнее

Показать сообщение отдельно
Tremr
Сообщений: n/a
08.09.2010, 19:20
Я нашел решение! Урррааа!!! Может кому будет интересно. Вот оно.

AppWizard для MDI интерфейса создает три класс рожденные, соответственно, от CDocument, CMDICildWnd (фрейм) и CView (этот класс мы допустим рождаем от CTreeView).

Создаем еще два класса рожденные соответственно от CMDICildWnd (фрейм) и, например, CListView.
Класс фрейма назовем CMyListFrame. А клас вида - CMyListView. Классы, которые создал AppWizard, пусть называются CMyDoc, CChildFrame, CChildView.

Если запустить программу сейчас, то в главном ее окне появится одно окно CChildFrame с CChildView внутри.
Можно сколько угодно таких окон выспетить, добавив несколько простых команд. Но чтобы к имеющемуся документу добавить еще одно отдельное окно с другим видом, нужно постараться. Что я и делал, причем долго безуспешно.

Решение лежит в классе шаблона документа CMultiDocTemplate. Вернее там лежит невозможность решения. Если посмотреть текст функции родительского класса CDocTemplate::CreateNewFrame, которая отвечает за создание фрейма с прикрепленными к нему видом и документом, то можно увидеть, что функция создает фрейм того класса который был задан при создании самого шаблона.
Когда я просмотрел на эту функцию у меня родилась идея создавать фрейм другого класса. Как это осуществить?
Надо создать, ни много ни мало, дочерний к CMultiDocTemplate класс. В котором написать
функцию полностью повторяющую CDocTemplate::CreateNewFrame, но вместо записанного в шаблоне класса для фрейма использовать другой класс. Например тот, который будет передан в эту функцию в качестве параметра (необходимо использовать CRuntimeClass*).

Теперь в функции C<имя пректа>App::InitInstance надо просто подменить тип указателя шаблона документ с CMultiDocTemplate на написанный нами дочерний класс шаблона. Ну и соответственно вызвать конструктор этого класса. А потом где-либо запускать функцию для создания нового фрейма, которую мы написали для дочернего шаблона документа.
И все создастся новый фрейм заданного класса.

Теперь еще одно. Чтобы фрейм нового класса присоединял к себе другой вид. Для этого существуюет функция OnCreateClient. Ее необходимо переопределить в классе этого фрейма примерно так, как написал в этой теме камрад ShepA. Кстати большое ему за это спасибо.

В итоге для каждого нового типа окна нам надо написать новый класс вида и новый класс фрейма, в функции OnCreateClient которого мы прописываем прикрепление этого вида.

Если кому непонятно, а понять хочется, пишите мне на tremr@mail.ru. Я вышлю вам свой проект реализующий эту фичу.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru