Передача параметра дочернему окну

Тема в разделе "MS Visual C++", создана пользователем opium8, 3 июн 2006.

Статус темы:
Закрыта.
  1. opium8

    opium8 Гость

    Привет
    Помогите пожалуйста.
    Есть диалоговое окно, в нем кнопка "Х", при нажатие на нее создается дочернее окно при помощи DoModal, наслдедник CDlg.
    как мне передать пару параметров в это дочернее окно?
    Зараннее спасибо всем!
     
  2. Kmet

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    Перегрузи DoModal и передовай.

    Но такой подход считатеся не очень красивым.
    Лучше DoMadal определить с модификатором доступа protected, и создать отдельный метод которым будешь передавать параметры и вызывать DoModal
     
  3. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Вы чего, какие перегрузки? Или в конструкторе, или просто прямым доступом к переменным. Ну можно прямой доступ заменить на Setxxx методы, если ты строгий апологет ООП.
     
  4. Kmet

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    Прямым доступом к переменным, setxxx?! Можно.....

    Но лично мне запись вида
    Код (Text):
    qstDlg.GetAnswerUser(................);
    нравится гораздо больше, чем
    Код (Text):
    qstDlg.Setx.........1
    qstDlg.Setx.........2
    qstDlg.Setx.........3
    qstDlg.Setx.........4
    qstDlg.DoModal();
     
  5. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Тебе-то может и нравится, только через год ни ты, ни тот кто будет этот код сопровождать после тебя не сможет сходу сказать что делает функция GetAnswerUser, и будет вынужден тратить время на анализ.
    А код
    Код (Text):
     CAskDialog dlg(......)
    int nRet = dlg.DoModal();
    останется прозрачным.

    В простейших случаях конечно есть смысл в обертке типа
    Код (Text):
    int GetAnswerUser(...)
    {
    CMyDialog dlg(...);
    dlg.DoModal();
    return dlg.GetResult();
    }
    но таких случаев не много. Все на мой взгляд, конечно, никому не навязываю :)
     
  6. Kmet

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    Каждый выбирает решение в подобных ситуациях из своих предпочтений. Я все же предрочитаю по возможности скрывать детали реализации и при говорящих именах методов и параметров код становится не намного менее прозрачным. Да и на сопровождении кода это может сказать вполне положительно, если кому-то после меня надо будет разобрать исключительно в интерфейсе класса.

    Вариант с иницилизацией в конструкторе мне нравится, но он не удобен, если создание объекта и отображение диалога сильно разнесенно по коду, конечно для модальных диалогов такие случаи редки, но все же могут случатся. Но это все опять же мое частное мнение.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей