В прошлом шаге мы с Вами убедились, что данные от элемента управления получить не удается. Нам нужно какое-то событие, которое происходит при нажатии на кнопку OK, чтобы вернуть данные. И такое событие есть. Давайте его перегрузим и добавим свой код. Сделать это можно двойным щелчком левой кнопки мыши по кнопке Ok.
У нас появится функция:
void CMyDialog::OnOK() { // TODO: Add extra validation here CDialog::OnOK(); }
Вот в нее мы и напишем код передачи данных от элемента в нашу переменную:
void CMyDialog::OnOK() { // TODO: Add extra validation here m_Ed1.GetWindowText(m_Ed1_str); CDialog::OnOK(); }
И теперь мы можем получать данные назад используя эту переменную.
void CTest6Doc::OnTestTest() { cm.m_Ed1_str ="Test"; cm.m_Ed2 = "extern"; cm.DoModal(); AfxMessageBox(cm.m_Ed1_str); }
Запускаем и редактируем данные.
А после закрытия диалога данные изменены.
Мы практически повторили механизм DDX.