Обработка значений контролов дочернего диалога
От: Sandro Peres  
Дата: 12.10.10 20:49
Оценка:
Здравствуйте!
Подскажите, пожалуйста, каким образом можно передать значения элементов управления дочернего диалогового окна для обработки их в родительском. Например, ввести информацию для подключения к базе данных в диалоговом окне, а работу с базой производить в процедуре главного окна.
Re: Обработка значений контролов дочернего диалога
От: CEMb  
Дата: 13.10.10 03:21
Оценка: +2
Здравствуйте, Sandro Peres, Вы писали:

SP>Здравствуйте!

SP>Подскажите, пожалуйста, каким образом можно передать значения элементов управления дочернего диалогового окна для обработки их в родительском. Например, ввести информацию для подключения к базе данных в диалоговом окне, а работу с базой производить в процедуре главного окна.

Например, создать структуру в классе приложения, или в классе главного окна(в зависимости от области применения), потом передать её в конструктор окна коннекта, окно коннекта по завершению работы заполнит структуру данными, которыми потом будет пользоваться приложение или главное окно.

Это же фундаментальные программные вещи
Re: Обработка значений контролов дочернего диалога
От: Jolly Roger  
Дата: 13.10.10 10:29
Оценка:
Здравствуйте, Sandro Peres, Вы писали:

SP>Здравствуйте!

SP>Подскажите, пожалуйста, каким образом можно передать значения элементов управления дочернего диалогового окна для обработки их в родительском. Например, ввести информацию для подключения к базе данных в диалоговом окне, а работу с базой производить в процедуре главного окна.

Вы бы пояснили более подробно, о чём идёт речь и что именно вызывает затруднения. И о каких контролах речь, Win32 окнах?
"Нормальные герои всегда идут в обход!"
Re[2]: Обработка значений контролов дочернего диалога
От: Sandro Peres  
Дата: 13.10.10 17:44
Оценка:
Здравствуйте, Jolly Roger, Вы писали:

JR>Здравствуйте, Sandro Peres, Вы писали:


SP>>Здравствуйте!

SP>>Подскажите, пожалуйста, каким образом можно передать значения элементов управления дочернего диалогового окна для обработки их в родительском. Например, ввести информацию для подключения к базе данных в диалоговом окне, а работу с базой производить в процедуре главного окна.

JR>Вы бы пояснили более подробно, о чём идёт речь и что именно вызывает затруднения. И о каких контролах речь, Win32 окнах?


Я имею в виду следующее. Допустим, есть главное окно и его дочернее диалоговое с EDIT'ами, CHECKBOX'ами и т.п. Я могу получить введенное значение какого-нибудь EDIT'а:
GetDlgItemText(hDlg, IDC_EDIT, buffer, sizeof(buffer));
Как передать полученное значение buffer в главное окно?
Re[3]: Обработка значений контролов дочернего диалога
От: Jolly Roger  
Дата: 15.10.10 01:37
Оценка:
Здравствуйте, Sandro Peres, Вы писали:

SP>Я имею в виду следующее. Допустим, есть главное окно и его дочернее диалоговое с EDIT'ами, CHECKBOX'ами и т.п. Я могу получить введенное значение какого-нибудь EDIT'а:

SP>GetDlgItemText(hDlg, IDC_EDIT, buffer, sizeof(buffer));
SP>Как передать полученное значение buffer в главное окно?

По сути всё сводится к тому, что Вам уже предложили — заводите структуру (или класс), призакрытии дочернего окна заполняете её и в потом используете. А способов реализации этого много. Например, если Вы создаёте дочернее окно с помощью CreateWindowEx, то можете, как вариант, связать с ним указатель с помощью SetWindowLongPtr, а при закрытии получить его через GetWindowLongPtr и заполнить. Если Ваше дочернее окно — ресурсный диалог, показываемый модально, то можно передать адрес этой структуры в функцию DialogBoxParam (без ресурсов — DialogBoxIndirectParam) и в обработчике WM_INITDIALOG выполнить привязку к окну.

Также можно воспользоваться парой SetProp/GetProp, и даже просто глобальной переменной. В общем, возможностей достаточно много.
"Нормальные герои всегда идут в обход!"
Re[4]: Обработка значений контролов дочернего диалога
От: Sandro Peres  
Дата: 15.10.10 07:24
Оценка:
Здравствуйте, Jolly Roger, Вы писали:

JR>По сути всё сводится к тому, что Вам уже предложили — заводите структуру (или класс), призакрытии дочернего окна заполняете её и в потом используете. А способов реализации этого много. Например, если Вы создаёте дочернее окно с помощью CreateWindowEx, то можете, как вариант, связать с ним указатель с помощью SetWindowLongPtr, а при закрытии получить его через GetWindowLongPtr и заполнить. Если Ваше дочернее окно — ресурсный диалог, показываемый модально, то можно передать адрес этой структуры в функцию DialogBoxParam (без ресурсов — DialogBoxIndirectParam) и в обработчике WM_INITDIALOG выполнить привязку к окну.


JR>Также можно воспользоваться парой SetProp/GetProp, и даже просто глобальной переменной. В общем, возможностей достаточно много.


Спасибо большое. Как раз и рассматривал варианты без использования глобальной переменной.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.