• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы opium8
  • Дата начала
Статус
Закрыто для дальнейших ответов.
O

opium8

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

Kmet

Well-known member
25.05.2006
904
8
BIT
0
Перегрузи DoModal и передовай.

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

grigsoft

Вы чего, какие перегрузки? Или в конструкторе, или просто прямым доступом к переменным. Ну можно прямой доступ заменить на Setxxx методы, если ты строгий апологет ООП.
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
Прямым доступом к переменным, setxxx?! Можно.....

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

grigsoft

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

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

Kmet

Well-known member
25.05.2006
904
8
BIT
0
Каждый выбирает решение в подобных ситуациях из своих предпочтений. Я все же предрочитаю по возможности скрывать детали реализации и при говорящих именах методов и параметров код становится не намного менее прозрачным. Да и на сопровождении кода это может сказать вполне положительно, если кому-то после меня надо будет разобрать исключительно в интерфейсе класса.

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!