![]() |
|
|
![]()
|
|
| kometa_triatlon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 384 Регистрация: 7.1.2005 Где: Киев Репутация: 1 Всего: 6 |
Есть рамочное окно, из меню вызывается окно диалога, в котором выставляются некоторые опции. Как их потом передать в класс CMainFrame? Дело в том, что прога состоит из трех классов: класс приложения, окна и класс этого диалога. В классе окна есть переменные, которые нужно изменить из класса диалога. Но ведь у меня нет объекта окна... Короче я потерялся. Пробовал CMainFrame::<variable> - не выходит.
-------------------- Всё очень просто: сказки обман, Солнечный остров скрылся в туман, Замков воздушных не носит земля, Кто-то ошибся, ты или я. -------------- Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым. |
|||
|
||||
| Leopard25 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
А если команды из меню обрабатывать в CMainFrame .....
Из какого класса ты хочешь получить указатель на CMainFrame ? --------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
|||
|
||||
| kometa_triatlon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 384 Регистрация: 7.1.2005 Где: Киев Репутация: 1 Всего: 6 |
Так это не команды меню. Из меню вызывается только диалог. Есть диалог (производный от CDialog, отдельный класс), к котором с помощью едитов, слайдеров и т.д. выставляются нужные опции. А потом мне эти данные нужно передать в класс, который знает, что с ними делать. А как - непонятно Я даже обобщу вопрос: как делаются такие настройки? Ведь это же везде: options - prefenses - вызывается диалог, жмем ОК, получаем изменения. Но диалог перестает существовать после нажатия ОК, как передать эти данные в классы, объектов которых нет? Например CMainFrame, CMyView, CMyDoc... Это сообщение отредактировал(а) kometa_triatlon - 8.5.2005, 20:16 -------------------- Всё очень просто: сказки обман, Солнечный остров скрылся в туман, Замков воздушных не носит земля, Кто-то ошибся, ты или я. -------------- Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым. |
|||
|
||||
| chipset |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 1 Всего: 165 |
Почему нет? Они есть.
Вот, насколько я помню CMyView получается вызовом AfxGetMainWnd. Для получения линка на документ: AfxGetMainWnd->GetDocument(); --------------------
|
|||
|
||||
| Coocky |
|
||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Да здрасте.Что здесь сложного?Класс диалога(описание) включаешь в класс окна.Ну и какие проблемы при манипулировании полями диалога через его обьект,с последующей передачей этих данных в поля Фрейма? Добавлено @ 21:48
А что нельзя включить окно в класс диалога? Это сообщение отредактировал(а) Coocky - 8.5.2005, 21:49 -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
||||
|
|||||
| kometa_triatlon |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 384 Регистрация: 7.1.2005 Где: Киев Репутация: 1 Всего: 6 |
Пробовал так: AfxGetApp()->m_pMainWnd-> <...и здесь приехали> Своих переменных я там не увидел. AfxGetMainWnd тоже самое. Да, классы знают друг о друге, но как это использовать? CMainFrame::m_Var=... ? Можно живой пример? Мой случай: нужно при нажатии кнопки ОК в диалоге задать значение m_nCurGraphColor из CMainFrame такое же, как у m_nCurGraphColor из COptionsDlg. Надеюсь это не отнимет у вас много времени MainFrame:
COptionsDlg:
-------------------- Всё очень просто: сказки обман, Солнечный остров скрылся в туман, Замков воздушных не носит земля, Кто-то ошибся, ты или я. -------------- Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым. |
||||||||
|
|||||||||
| Gazon |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 9.1.2005 Репутация: 4 Всего: 8 |
Указатель, который возвращает эта ф-ия, надо привести к производному типу. Т.е. в твоем случае это будет так:
Это сообщение отредактировал(а) Gazon - 9.5.2005, 01:41 --------------------
Чем больше узнаешь, тем больше не знаешь, но до истины всегда можно добраться. |
||||
|
|||||
| Leopard25 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
А создавать диалог из CMainFrame ведь можно.....
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
|||
|
||||
| kometa_triatlon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 384 Регистрация: 7.1.2005 Где: Киев Репутация: 1 Всего: 6 |
Gazon
Не вышло Во-первых чтобы сделать (CMainFrame*) диалог должен знать о CMainFrame, а включение в OptionsDlg.h директивы #include "mainfrm.h" вызывает ошибку Class type redefinition. Если бы я мог обьявить CMainFrame в диалоге... Во-вторых компилятор конструкцию ((CMainFrame*)AfxGetMainWnd())->m_nCurGraphColor не проглотил Leopard25
Что ты имел ввиду? Ну, я его вызываю из фрейма... -------------------- Всё очень просто: сказки обман, Солнечный остров скрылся в туман, Замков воздушных не носит земля, Кто-то ошибся, ты или я. -------------- Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым. |
|||
|
||||
| Leopard25 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
Если диалог будешь создавать в CMainFrame то у тебя будет указатель в CMainFrame на твой диалог....
Диалог модальный ? --------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
|||
|
||||
| Gazon |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 9.1.2005 Репутация: 4 Всего: 8 |
Все что тебе осталось, это правильно подключить mainfrm.h --------------------
Чем больше узнаешь, тем больше не знаешь, но до истины всегда можно добраться. |
|||
|
||||
| kometa_triatlon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 384 Регистрация: 7.1.2005 Где: Киев Репутация: 1 Всего: 6 |
Leopard25
модальный Gazon Что значит правильно? Если я в файле фрейма пишу #include "OptionsDlg.h" а в файле диалога - #include "mainfrm.h", то получается замкнутый круг, переопределение класса фрейма. Как сделать, чтобы диалог знал о классе фрейма? -------------------- Всё очень просто: сказки обман, Солнечный остров скрылся в туман, Замков воздушных не носит земля, Кто-то ошибся, ты или я. -------------- Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым. |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
kometa_triatlon
страный ты человек.Я ж тебе уже ответил Добавлено @ 20:29 kometa_triatlon
Голос из зала "в *.срр" надо -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| kometa_triatlon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 384 Регистрация: 7.1.2005 Где: Киев Репутация: 1 Всего: 6 |
Вот. Наконец-то -------------------- Всё очень просто: сказки обман, Солнечный остров скрылся в туман, Замков воздушных не носит земля, Кто-то ошибся, ты или я. -------------- Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым. |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
kometa_triatlon
Я тебе еще восьмого мая сказал,а ты все постишь,коды бросаешь -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |