Обмен информацией между переменной m_text и элементом IDC_EDIT1 осуществляется в методе DoDataExchange().В ней вызываются созданные мастером Class Wizard специальные процедуры, позволяющие привязать созданные им элементы данных к элементам управления диалоговых окон. Эти процедуры носят названия «обмен данными диалогового окна» и «проверка данных диалогового окна»(DDX/DDV Dialog Data Exchange and Dialog Data Validation).
Функция DDX_Text() перемещает данные между переменной m_text и элементом редактирования IDC_EDIT1.
void Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);//Было
DDX_Text(pDX,IDC_EDIT1,m_text);//Добавлено
}
Функция DDX_Text() появилась в результате добавления элемента данных m_text, когда было выделено текстовое окно, в контекстном меню выбрано Add Variable и в строке Category Control изменено на Value. Можно было добавить m_text и другим способом, когда выделяется класс, вызывается контекстное меню и внем выбирается Add Variable. В этом случае строка Category неактивная. Придется самостоятельно задавать тип переменной CString а также вводить в метод DoDataExchange() вызов функции DDX_Text().
2.4.2 Обработчик нажатия кнопки Ok
Нужно обеспечить прочтение содержимого текстового окна в m_text
тоесть присвоить m_text=IDC_EDIT1 и затем вывести его на клиентскую область при нажатии кнопки Oк. Для этого нужно создать обработчик нажатия этой кнопки. В принципе в данной программе содержимое текстового окна не изменялось, поэтому можно обойтись без присваивания и без создания этого обработчика. Но в общем случае текст вокне может быть изменен. Поэтому есть смысл показать как быть в этом случае.
Нужно выделить в диалоговом окне кнопку Ок, вызвать контекстное меню и щёлкнуть по Add Event Handler. В появившемся окне выбрать BN_CLICKED и класс Dlg. После нажатия Add and Edit получается обработчик
void Dlg::OnBnClickedOk()
{
// TODO: Add your control notification handler code here
OnOK();
}
Для того, чтобы обеспечить присваивание содержимого текстового окна с именем IDC_EDIT1 переменной m_text, следует использовать метод UpdateData (true), но теперь уже с параметром true.
void Dlg::OnBnClickedOk()
{
UpdateData(true);//Добавили
// TODO: Add your control notification handler code here
OnOK();//Было
}
2.4.3 Отображение диалогового окна
Необходимо создать обработчик выбора пункта меню «Show Dialg…».
Для этого необходимо открыть редактор меню. Если в заголовке окна редактирования есть требуемый dia.rc(IDR_MAINRAME-Menu), то просто щёлкнуть на нём. Иначе- выбрать вкладку Resource View, раскрыть папку menu, выделить пункт IDR_MAINFRAME , вызвать контекстное меню , щёлкнуть на open. В окне редактора меню выбрать пункт «Show Dialog…», вызвать контекстное меню, щёлкнуть на Add Event Handler. В появившемся окне выбрать COMMAND и Dlg. После нажатия кнопки Add and Edit появится обработчик void CdiaView::OnFileShowdialog(). В нём нужно использовать функцию DoModal(), которая вызывает т.н. модальное окно.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.