Создание приложений, основанных на диалоговом окне
Цель работы: приобретение навыков создания приложений для Windows, знакомство с основами визуального проектирования.
Задание к лабораторной работе 1. Ознакомиться с основными принципами визуального проектирования, элементами управления, их свойствами и событиями; 2. Выполнить последовательно все пункты, указанные в разделе «Ход работы»; 3. Оформить отчет.
Ход работы 1. Создать проект программы Создать программу TEST.EXE, которая должна работать следующим образом: - При вводе в строке редактирования слов "Paint" и "Calculator", запускаются соответственно "Windows Paint" и "Windows Calc". - При снятии флажка Visible, строка редактирования исчезает, а при снятии флажка Enabled, закрывается доступ к окну редактирования. - При отмечании флажков, все происходит наоборот.
2. Выполнить визуальное проектирование диалоговой панели При запуске программы, главное окно должно выглядеть так:
Задайте свойства элементов управления в соответствии с таблицей.
· В объекте Dialog Box вы задаете следующие данные: · Edit Box - это окно редактирования, в нем вы можете вводить свой текст. Мы не задавали этому элементу никаких дополнительных параметров, нам необходимо только знать его итендификатор(IDC_TEST_EDIT). · В следующем пункте Group Box, который служит для выделения эелементов управления в рамку. Вы указали для этого элемента название(Captions) Test и итендификатор IDC_STATIC. · Static Text - это элемент текста, он вставляется как обычный элемент управления, но не выполняет ни каких функций, так как служит для показа текста, который вы зададите в Captions. В данном случае мы вставляем инструкцию по применению программы: INSTRUCTIONS: To execute.... Вы, наверное, заметили, что этот элемент имеет такой же итендификатор, как и у Group Box, так как мы не будем их использовать в программе и связывать с ними события(хотя это и невозможно). · Следующие два элемента Check Box с Captions &Visible и &Enable, будут служить для скрытия окна редактирования и закрытия доступа к окну редактироавния, и наоборот. Если они включены, то окно видимо и есть к нему доступ, и наоборот. При запуске программы они должны будут быть отмечены. Для этого в дальнейшем мы напишем специальный код. · Затем идут три кнопки Test, Clear и Exit. При нажатии на кнопку Test в окне редактирования появляется текст: This is a Test, а при нажатии на кнопку Clear, окно редактирования очищается. Кнопка E&xit, служащая для завершения программы, имеет еще дополнительные параметры, которые можно включить на странице Extended Styles. Они служат для разнообразного обрамления, выделения.
3. Связать переменные с окном редактирования и флажками Более подробная информация приведена в Приложении Г.
4. Связать элементы управления с событиями Событие – инициализация диалогового окна. Напишите следующий код в функции OnInitDialog(): BOOL CTestDlg::OnInitDialog() // TODO: Add extra initialization here ////////Мой код начинается здесь/////////// //Устаноить переменную флажка VisibleCheck и EnabledCheck в состояние ////////Мой код заканчивается здесь/////////// return TRUE; // Вернуть TRUE, если только вы не установили фокус на элемент управления Рассмотрим код: Первый и второй операторы, который которые вы ввели присваивают переменным m_VisibleCheck и m_EnableCheck значение TRUE. Это означает, что при запуске программы флажки будут отмечены. Последний оператор UpdateData(FALSE) обновляет экран, т.е. он обновляет значения переменных элементов управления на текущие. В нашем случае, при выполнении этого оператора текущие содержимое переменных связанных с флажками будет передано к ним. Теперь для того, чтобы посмотреть инициализирующий код в действии выполните программу.
Событие – нажатие на кнопку. Связывание кода с событием BN_CLICKED кнопки Exit При нажатии на кнопку Exit программа Test.Exe завершится. Добавьте в функцию обработки события для этой кнопки следующий код: void CTestDlg::OnExitButton() ////////Мой код начинается здесь/////////// OnOK(); ////////Мой код заканчивается здесь/////////// } Функция OnOK(), которую вы ввели завершает программу, при нажатии на кнопку Exit. Связывание кода с событием BN_CLICKED кнопки Test При нажатии на кнопку Test программа Test.Exe в окне редактирования напишет текст: This is a Test Чтобы связать код с событием BN_CLICKED кнопки Test, напишите следующий код в функции OnTestButton(): void CTestDlg::OnTestButton() ////////Мой код начинается здесь/////////// ///Присвоить переменной окна редактирования IDC_TEST_EDIT значение This is a Test. ////////Мой код заканчивается здесь/////////// } Код, который вы ввели содержит два оператора: Первый присваивает переменной m_TestEdit типа CString значение This is a Test. А второй оператор UpdateData(FALSE); обновляет экран, т.е. сообщает переменным диалогового окна текущие их значения.
Связывание кода с событием BN_CLICKED кнопки Clear При нажатии на кнопку Clear программа Test.Exe должна стирать текст из окна редактирования. Чтобы связать код с событием BN_CLICKED кнопки Clear, напишите следующий код в функции OnClearButton(): void CTestDlg::OnClearButton() ////////Мой код начинается здесь/////////// ///Присвоить переменной окна редактирования IDC_TEST_EDIT значение NULL. ////////Мой код заканчивается здесь/////////// } Код, который вы ввели содержит два оператора: Первый присваивает переменной m_TestEdit типа CString значение NULL, т.е. окно редактирования не будет содержать никакого текста. А второй оператор UpdateData(FALSE); обновляет экран, т.е. сообщает переменным диалогового окна текущие их значения. При выполнении этого оператора весь текст из окна редактирования удалится. Теперь сохраните свою работу, выбрав Save All в меню File. Чтобы увидеть в действии код программы выполните и запустите ее. Напишите что-нибудь в окне редактирования. Щелкните на кнопку Clear, вы видите что текст стирается. Теперь нажмите на кнопку Test в окне редактирования появится текст This is a Test. Если все это выполняется, значит, вы совершенно правильно связали события с кнопками Test и Clear. Событие – установка флажка. Связывание кода с событием BN_CLICKED флажка Visible. При включении флажка Visible программа Test.Exe должна сделать окно редактирования невидимым, а при выключении - наоборот. Чтобы связать код с событием BN_CLICKED флажка Visible,: напишите следующий код в функции OnEnableButton(): void CTestDlg::OnVsibleCheck() ////////Мой код начинается здесь/////////// ////Обновить значения переменных элементов управления, ////////Мой код заканчивается здесь/////////// } Код который вы ввели содержит следующие операторы: UpdateData(TRUE); - этот оператор обновляет значения переменных элементов управления текущими значениями, которые содержаться на экране. Т.е. при нажатии на флажок переменная может принимать два значения TRUE или FALSE, TRUE - это когда флажок включен, а FASLE - наоборот. Значит при выполнении этого оператора переменная флажка управления принимаеит текущее положение флажка и все остальные переменные обновляются значениями, которые отображаются на экране.
Следующие оператор проверяет включен или выключен флажок. Если он включен, то выполняется оператор GetDlgItem(IDC_TEST_EDIT)->ShowWindow(SW_SHOW);, где GetDlgItem(IDC_TEST_EDIT) извлекает указатель на элемент управления, а функция ShowWindow(SW_SHOW); с параметром SW_SHOW, делает окно редактирования видимым. А если флажок не отмечен, то выполняется таже самая функция ShowWindow(); с параметром SW_HIDE, этот параметр означает спрятать окно редактирования. Связывание кода с событием BN_CLICKED флажка. Enable При включении флажка Enable программа Test.Exe должна сделать окно редактирования доступным, а при выключении - недоступным. Чтобы связать код с событием BN_CLICKED флажка Enable,: напишите следующий код в функции OnEnableButton(): void CTestDlg::OnEnableCheck() ////////Мой код начинается здесь/////////// ////Обновить значения переменных элементов управления, ////////Мой код заканчивается здесь/////////// } Код который вы ввели содержит следующие операторы: UpdateData(TRUE) - обновляет переменные элементов управления текущими их значениями на экране. После выполнения этого оператора перменной m_EnableCheck присваивается текущее значение флажка Enable. Следующие операторы имееют ту же конструкцию, как и у флажка Visible, но только функция ShowWindow заменена на EnableWindow(), которая предназначена для того, чтобы элемент управления был недоступен или доступен. Она имеет те же параметры, что и функция ShowWindow.
Событие – изменение строки в окне редактирования. Связывание кода с событием EN_CHANGE окна редактирования. В нашей программе при вводе слова CALCULATOR запускается калькулятор, а при вводе Paint - графический редактор Paint. Чтобы связать код с событием EN_CHANGE окна редактирования, напишите следующий код в функции OnChangeTestEdit(): void CTestDlg::OnChangeTestEdit()
///Если в окне редактирования напечатано PAINT ///Если в окне редактирования напечатано CALCULATOR ////////Мой код заканчивается здесь/////////// } Код который вы ввели содержит следующие операторы: UpdateData(TRUE); обновляет переменную m_TestEdit значением содержимого окна редактирования, при каждом его изменении, так как окно редактирования связано с событием EN_CHANGE. Следующий оператор CString UpperValue; содает новую переменную типа CString. Затем переменной UpperValue приравнивается значение переменной m_TestEdit, это можно сделать, так как они имеют одинаковый тип. Оператор UpperValue.MakeUpper(); переводит все символы переменной UpperValue в верхний регистр. Оператор if(UpperValue=="PAINT"); проверяет, если введено ли слово PAINT, то выполняются следующие три оператора: Заметьте, что мы перевели символы переменной UpperValue в верхний регистр - это нужно потому, что в языке С++ символы нижнего и верхнего регистра имеют разные значения, поэтому при переводе на верхний регистр, мы 100% будем уверены, что написанное нами слово PaInT совпадет с PAINT. Следующая конструкция операторов полностью идеинтична предыдущей, только проверяется равно ли значение переменной m_TestEdit слову CALCULATOR, если да, то запускается калькулятор, и окно редактирования очищается.
ПРИЛОЖЕНИЕ А
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|