• UpdateData(TRUE)
— обновляет переменные элементов управления текущими их значениями на экране. После выполнения этого оператора переменной m_EnableCheck присваивается текущее значение флажка Enable.• Следующие операторы имеют ту же конструкцию, как и у флажка Visible
, но только функция ShowWindow заменена на EnableWindow(), которая предназначена для того, чтобы элемент управления был недоступен или доступен. Она имеет те же параметры, что и функция ShowWindow.При вводе текста и его изменении в окне редактирования, возникает событие EN_CHANGE
. В нашей программе при вводе слова CALCULATOR запускается калькулятор, а при вводе Paint — графический редактор Paint.• Чтобы связать код с событием EN_CHANGE
окна редактирования, выполните следующие действия:• Выберете ClassWizard
в меню View• Выберете закладку Message Maps
в панели ClassWizard• Используйте диалоговую панель ClassWizard
для выбора следующего события:Class Name: CTestDIg
Object ID: IDC_TEST_EDIT
Messages: EN_CHANGE
• Щелкните на кнопку Add Fucntion
и в раскрывшемся окне нажмите кнопку ОК.Нажмите кнопку Edit Code
и напишите следующий код в функции OnChangeTestEdit():void СТestDig::OnChange TestEditQ
{
// TODO: Add your control notification handler code here
////////Мой код начинается здесь///////////
///Обновить переменные
UpdateData(TRUE);
///Создать переменную типа CString, присвоить ей значение
///переменной m_ TestEdit и выполнить перевод символов в верхний
///регистр.
CString UpperVaiue;
UpperVaiue=m_ TestEdit;
UpperValue.MakeUpper();
///Если в окне редактирования напечатано PAINT
///запускается редактор PAINT и окно редактирования становится пустым.
if(UpperValue== "PAINT")
{
system("pbrush.exe "); m_TestEdit=" ";
UpdateData(FALSE);
///Если в окне редактирования напечатано CALCULATOR ///запускается калькулятор и окно редактирования становится пустым.
if(UpperVatoe== "CALCULA TOR")
{
system("calc.exe ")} m_TestEdit="
UpdateData(FALSE);
}
////////Мой код заканчивается здесь///////////
}
• Код который вы ввели содержит следующие операторы:
• UpdateData(TRUE);
обновляет переменную m_TestEdit значением содержимого окна редактирования, при каждом его изменении, так как окно редактирования связано с событием EN_CHANGE.• Следующий оператор CString UpperValue;
создает новую переменную типа CString.• Затем переменной UpperValue
приравнивается значение переменной m_TestEdit, это можно сделать, так как они имеют одинаковый тип.• Оператор UpperValue.MakeUpper();
переводит все символы переменной UpperValue в верхний регистр.• Оператор if(UpperValue=="PAINT");
проверяет, если введено ли слово PAINT, то выполняются следующие три оператора:Первый system("pbrush.exe");
запускает графический редактор, так как не указан явный путь к файлу, то программа будет искать его в каталоге C: \WINDOWS.Второй оператор m_TestEdit="";
присваивает переменной окна редактирования значение NULL, а следующий оператор UpadteData(FALSE) — обновляет экран. Вследствие этого, весь текст из окна редактирования удалится.• Заметьте, что мы перевели символы переменной UpperValue
в верхний регистр — это нужно потому, что в языке C++ символы нижнего и верхнего регистра имеют разные значения, поэтому при переводе на верхний регистр, мы 100 % будем уверены, что написанное нами слово Paint совпадет с PAINT.• Следующая конструкция операторов полностью идентична предыдущей, только проверяется равно ли значение переменной m_TestEdit
слову CALCULATOR, если да, то запускается калькулятор, и окно редактирования очищается.Вы закончили связывание событий с элементами управления
Упражнение