ClassWizard поможет нам связать переменные класса с элементами диалогового окна. Запустите ClassWizard и перейдите на вкладку Member Variables (рис. 21).
Рис. 21
Выделите идентификатор текстового поля IDC_EDIT1 и нажмите кнопку Add Variable. Откроется окно Add Member Variable, изображенное на рис. 22. В нем присвоим имя переменной для хранения содержимого текстового поля. Занесем в поле Member variable name строку m_text и проследим, чтобы в списке Category был выбран пункт Value, а в списке Variable type – CString. Так связываються содержимое поля и переменная класса CString с именем m_text.
Рис. 22
После закрытия окна Add Member Variable в перечне идентификаторов ClassWizard появилась новая переменная m_text (рис. 23).
Рис. 23
Переменная для работы с тестовым полем готова. Теперь можно задать содержимое текстового поля в методе OnButton1().
void Dlg::OnButton1()
{
m_text = «Текст в диалоговом окне»;
}
Простое присвоение переменной текста еще не заставит текст появляться в диалоговом окне. Обмен информацией между переменной и элементом IDC_EDIT1 осуществляется в специальном методе, включенном ClassWizard в класс диалогового окна:
|
|
void Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(Dlg)
DDX_Text(pDX, IDC_EDIT1, m_text);
//}}AFX_DATA_MAP
}
Для обновления текстового поля следует вызвать метод UpdateData():
void Dlg::OnButton1()
{
m_text = «Текст в диалоговом окне»;
UpdateData(false);
}
Вызов этого метода с параметром false заносит в текстовое поле значение переменной m_text. Вызов с параметром true присваивает переменной m_text содержимое текстового поля:
UpdateData(false) означает: IDC_EDIT = m_text;
UpdateData(true) означает: m_text = IDC_EDIT;
Строка перенесена в текстовое поле, пользователь может отредактировать ее перед нажатием кнопки Ок.