![]() |
|
|
![]()
|
|
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: нет Всего: 56 |
каким образом заставиль FormView создаваться на основе разных диалогов из ресурсов
Вот так enum { IDD = IDD_FORMVIEWBASE1 }; я указываю 1 диалог на основе которого создаётся класс... А вот тут я так понимаю обращаюся к этому диалогу FormViewBase::FormViewBase() : CFormView(FormViewBase::IDD) { } ... Вот а теперь как сделать что бы в одном случае загружалось IDD_FORMVIEWBASE1 , а в другом некий IDD_FORMVIEWBASE2... Спасибо. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Выкинь нафиг этот enum... Вот за это разработчиков MFC - визардов убить надо... Смысла никакого, но зато вынуждает подключать resource.h уже в диалог-хедер, что плохо, т.к. порождает ненужные зависимости.
Никто не мешает нужный IDD_XXX передавать явно. Что касается собственно вопроса. Класс-наследник CFormView объявляется DYNCREATE (чтобы создаваться в шаблоне CDocTemplate), а это значит, что он должен иметь конструктор без параметров. Поэтому вопрос как передать в базовый класс нужный IDD, напрямую зависит от вопроса зачем. Как вариант, могу предложить такой метод:
где GetCurrentIDD - глобальная или статическая в классе функция, которая определяет нужный IDD на основе контекста - флагов, или чего там у тебя. С другой стороны, если CFormViewBase - это базовый класс для других форм-вью, то просто сделай ему конструктор с параметром. -------------------- ... |
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: нет Всего: 56 |
Замечательно, так работает.
продолжение вопроса: как мне сделать создание новых документов по выбору пункта меню(не новый документ), а пункта который создан мною...? |
|||
|
||||
| Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 10 Всего: 18 |
Добавляешь в карту сообщений объекта приложения следующий макрос
-------------------- Подпись больше не нужна |
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: нет Всего: 56 |
Немного не то, но спсб... разобрался...
далее по теме... Последовательность инициализации. У меня на моей форм-вью есть комбо-бокс. Я хочу при создании заполнить его значениями. Для этого комбо-бокса я создал переменную m_combo. Но в OnCreate() или PreCreate() эта переменная ещё не инициализирована!!!!. В CDialog есть событие OnInitDialog() ... вот тут переменные уже проинициализированы... А в формью где мне перехватить такое событие???? Это сообщение отредактировал(а) v2v - 16.4.2007, 18:23 |
|||
|
||||
| Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 10 Всего: 18 |
-------------------- Подпись больше не нужна |
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: нет Всего: 56 |
то что надо!.
спсб. Возник вопрос: например: ОнКриэйт() надо записывать в Месадж мап, а эту функцию нет... почему?? |
|||
|
||||
| Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 10 Всего: 18 |
Смотрим MSDN по слову OnInitialUpdate:
То есть это просто виртуальная функция. А ON_WM_CREATE() - макрос связывающий обработку сообщения WM_CREATE с функцией int OnCreate(LPCREATESTRUCT lpCreateStruct) -------------------- Подпись больше не нужна |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |