Здравствуйте!
Подскажите, пожалуйста, каким образом можно передать значения элементов управления дочернего диалогового окна для обработки их в родительском. Например, ввести информацию для подключения к базе данных в диалоговом окне, а работу с базой производить в процедуре главного окна.
Здравствуйте, Sandro Peres, Вы писали:
SP>Здравствуйте! SP>Подскажите, пожалуйста, каким образом можно передать значения элементов управления дочернего диалогового окна для обработки их в родительском. Например, ввести информацию для подключения к базе данных в диалоговом окне, а работу с базой производить в процедуре главного окна.
Например, создать структуру в классе приложения, или в классе главного окна(в зависимости от области применения), потом передать её в конструктор окна коннекта, окно коннекта по завершению работы заполнит структуру данными, которыми потом будет пользоваться приложение или главное окно.
Здравствуйте, Sandro Peres, Вы писали:
SP>Здравствуйте! SP>Подскажите, пожалуйста, каким образом можно передать значения элементов управления дочернего диалогового окна для обработки их в родительском. Например, ввести информацию для подключения к базе данных в диалоговом окне, а работу с базой производить в процедуре главного окна.
Вы бы пояснили более подробно, о чём идёт речь и что именно вызывает затруднения. И о каких контролах речь, Win32 окнах?
Здравствуйте, Jolly Roger, Вы писали:
JR>Здравствуйте, Sandro Peres, Вы писали:
SP>>Здравствуйте! SP>>Подскажите, пожалуйста, каким образом можно передать значения элементов управления дочернего диалогового окна для обработки их в родительском. Например, ввести информацию для подключения к базе данных в диалоговом окне, а работу с базой производить в процедуре главного окна.
JR>Вы бы пояснили более подробно, о чём идёт речь и что именно вызывает затруднения. И о каких контролах речь, Win32 окнах?
Я имею в виду следующее. Допустим, есть главное окно и его дочернее диалоговое с EDIT'ами, CHECKBOX'ами и т.п. Я могу получить введенное значение какого-нибудь EDIT'а:
GetDlgItemText(hDlg, IDC_EDIT, buffer, sizeof(buffer));
Как передать полученное значение buffer в главное окно?
Здравствуйте, 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, и даже просто глобальной переменной. В общем, возможностей достаточно много.
Здравствуйте, Jolly Roger, Вы писали:
JR>По сути всё сводится к тому, что Вам уже предложили — заводите структуру (или класс), призакрытии дочернего окна заполняете её и в потом используете. А способов реализации этого много. Например, если Вы создаёте дочернее окно с помощью CreateWindowEx, то можете, как вариант, связать с ним указатель с помощью SetWindowLongPtr, а при закрытии получить его через GetWindowLongPtr и заполнить. Если Ваше дочернее окно — ресурсный диалог, показываемый модально, то можно передать адрес этой структуры в функцию DialogBoxParam (без ресурсов — DialogBoxIndirectParam) и в обработчике WM_INITDIALOG выполнить привязку к окну.
JR>Также можно воспользоваться парой SetProp/GetProp, и даже просто глобальной переменной. В общем, возможностей достаточно много.
Спасибо большое. Как раз и рассматривал варианты без использования глобальной переменной.