Интернет-журнал 'Домашняя лаборатория', 2007 №1 - Цыбанова
Шрифт:
Интервал:
Закладка:
///А если нет — то невидимым if(m_ VisibleCheck==TRUE)
GetDigItem(IDC_TEST_EDIT)->ShowWindow(SW_SHOW);
else
GetDigItem(IDC_TEST_EDIT)->ShowWindow(SW_HIDE);
////////Мой код начинается здесь///////////
}
• Код который вы ввели содержит следующие операторы:
• UpdateData(TRUE); — этот оператор обновляет значения переменных элементов управления текущими значениями, которые содержаться на экране. Т. е. при нажатии на флажок переменная может принимать два значения TRUE или FALSE, TRUE — это когда флажок включен, a FASLE — наоборот. Значит при выполнении этого оператора переменная флажка управления принимает текущее положение флажка и все остальные переменные обновляются значениями, которые отображаются на экране.
• Следующие оператор проверяет включен или выключен флажок. Если он включен, то выполняется оператор GetDlgItem(IDC_TEST_EDIT)->ShowWindow(SW_SHOW);, где GetDlgItem(IDC_TEST_EDIT) извлекает указатель на элемент управления, а функция ShowWindow(SW_SHOW); с параметром SW_SHOW, делает окно редактирования видимым.
• А если флажок не отмечен, то выполняется также самая функция ShowWindow(); с параметром SW_HIDE, этот параметр означает спрятать окно редактирования.
Связывание кода с событием BN_CLICKED флажка Visible
При включении флажка Enable программа Test.Exe должна сделать окно редактирования доступным, а при выключении — недоступным.
• Чтобы связать код с событием BN_CLICKED флажка Enable, выполните следующие действия:
• Выберете ClassWizard в меню View
• Выберете закладку Message Maps в панели ClassWizard
• Используйте диалоговую панель ClassWizard для выбора следующего события:
Class Name: CTestDIg
Object ID: IDC_ENABLE_CHECK
Messages: BN_CLICKED
• Щелкните на кнопку Add Fucntion и в раскрывшемся окне нажмите кнопку ОК.
• Нажмите кнопку Edit Code и напишите следующий код в функции OnEnableButton():
void CTestDIg::OnEnableCheck()
{
// TODO: Add your control notification handler code here
////////Мой код начинается здесь///////////
////Обновить значения переменных элементов управления,
////(содержимое экрана передается переменным элементов управления)
UpdateData(TRUE);
///Если отметка флажка Enable зделать окно редактирования видимым
///А если нет — то невидимым
if(m_EnableCheck==TRUE)
GetDlgItem(IDC_TEST_EDIT)->EnableWindow(SW_SHOW);
else
GetDlgItem(IDC_TEST_EDIT)->EnableWindow(SW_HIDE);
////////Мой код заканчивается здесь///////////
}
• Код который вы ввели содержит следующие операторы:
• UpdateData(TRUE) — обновляет переменные элементов управления текущими их значениями на экране. После выполнения этого оператора переменной m_EnableCheck присваивается текущее значение флажка Enable.
• Следующие операторы имеют ту же конструкцию, как и у флажка Visible, но только функция ShowWindow заменена на EnableWindow(), которая предназначена для того, чтобы элемент управления был недоступен или доступен. Она имеет те же параметры, что и функция ShowWindow.
Связывание кода с событием EN_CHANGE окна редактирования
При вводе текста и его изменении в окне редактирования, возникает событие 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, если да, то запускается калькулятор, и окно редактирования очищается.
Вы закончили связывание событий с элементами управления
Резюме и Упражнение
Упражнение
Сейчас вы выполните упражнение. Вам необходимо включить в свою программу еще код, чтобы при вводе слова Веер в окне редактирования, компьютер подавал звуковой сигнал. Подсказка: Код для генерации сигнала MessageBeep((WORD)-2);
Ответ к упражнению
Для того, чтобы выполнить упражнение вам необходимо включить в конец функции OnChangeTestEdit следующий код:
if(UpperVatoe== "ВЕЕР")
{
MessageBeep((WORD)-2);
m_ TestEdit=
UpdateData(FALSE);
}
Резюме
В этой главе вы получили некоторой опыт использования элементов управления и написали программу, которая имеет такие элементы управления, как окно редактирования, флажок и кнопка.
Вы также увидели процесс написания программы, использующей различные средства управления, который состоит в размещении элемента управления в диалоговой панели, настройки его свойств и связывания кода с событием данного элемента.
Теперь выполняем программу, для этого заходим в меню Build->Build Test.exe, а потом в меню Build выбираем Execute Test.exe
Вы закончили второй урок!
LESSON 3
Сейчас мы создадим программу DRAW.EXE Посмотрим на ее спецификацию и что она должна делать.
• Программа DRAW предназначена для рисования с помощью мыши линий установленного цвета и размера, программа будет рисовать линию в соответствии с движениями мыши.
• При нажатии на кнопку Exit программа завершается.
При запуске вашей программы, главное окно должно будет выглядеть так: