- •Лабораторная работа №9. Интерфейс графических устройств Windows
- •Лабораторная работа №10 Элементы управления радиокнопки (Radio Button) и переключатели (Check Box)
- •Задание к лабораторной работе
- •Лабораторная работа №11 Работа с элементом управления «Окно списка» (ListBox)
- •Лабораторная работа №12 Работа с элементом управления «Комбинированный список» (ComboBox)
- •Лабораторная работа №13 Элементы управления «Шкала индикации» (Progress) и «Маркер» (Slider). Модальные диалоговые окна
Для работы был использован Microsoft Visual C++ 6.0
Лабораторная работа №9. Интерфейс графических устройств Windows
Цель лабораторной работы: изучить методы работы с графическим интерфейсом (GDI). Научиться строить простые геометрические фигуры.
И
ндивидуальные
задания:
Создаем диалоговую панель, для этого переходим через главную панель File->New. Далее выбираем MFC AppWizard (exe) вводим имя в «Project name» - Draw , нажимаем ОК
Выбираем Dialog Based и жмем Next
Убираем галочку с About Box и жмем Finish, остальные окна нас не интересуют
С помощью панели
Выбираем Button и располагаем на панели следующим образом:
для изменения подписи кнопки выбираем правой клавишей Properties и вводим:
В обработчике кнопки , который вызывается двойным щелчком по соответствующей кнопке
пишем код программы
void CDrawDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CClientDC dc(this); //объявляем класс, производный от класса CDC
// класс CСlientDC предназначен для рисования в диалоговом окне
CBrush br; // объявляем класс кисти
br.CreateSolidBrush(RGB(100,100,100)); //создаем сплошную серую кисть
dc.SelectObject(&br);// выбираем кисть в контекст устройства
CPen p; //объявляем класс пера
p.CreatePen(PS_SOLID ,2,RGB(255,0,0));
//создаем сплошное перо, толщиной 2, красного цвета
dc.SelectObject(&p); // выбираем перо в контекст устройства
//Обозначаем точки для многоугольника
CPoint pts[5];
pts[0].x = 35;
pts[0].y = 10;
pts[1].x = 200;
pts[1].y = 10;
pts[2].x = 200;
pts[2].y = 200;
pts[3].x = 10;
pts[3].y = 200;
pts[4].x = 10;
pts[4].y = 35;
dc.Polygon(pts,5); //Рисуем многоугольник
}
При нажатии на кнопку «Рисовать» получаем как на Рисунке 6:
Лабораторная работа №10 Элементы управления радиокнопки (Radio Button) и переключатели (Check Box)
Цель работы – изучить принципы работы элементов управления: радиокнопок (Radio Button) и переключателей (Check Box), позволяющих устанавливать тот или иной режим работы.
Задание к лабораторной работе
В индивидуальном задании составить программу для вычисления составной функции в соответствии со своим вариантом. Требуется самостоятельно выбрать необходимое количество исходных данных для того, чтобы в программе выполнялись все возможные ветви алгоритма. Перед выводом полученного результата программа должна сообщать о ветви, для которой он получен. В качестве f(x) использовать по выбору: «радиокнопками» функции cos(x), sin(x), tg(x). Программа должна через «переключатели» запоминать или не запоминать min и max найденные значения. Вариант интерфейса приведен на рисунке
.
Для решения задачи необходимо сделать следующие действия:
1) Создать при помощи MFCAppWizard(exe) новый проект (предварительно выбрав путь и имя – например Radio) типа Dialog based.
2) Используя панель Controls, нанести на диалоговую панель 3 элемента типа Edit Box, 4 – Static Text, 1 – Button, 2- Radio Button, 1 – Check Box и установить нужные свойства и надписи (для Radio Button с идентификатором IDC_RADIO1 нужно установить свойство Group).
3) При помощи ClassWizard через закладку Member Variables связать поле Edit1 с переменной m_a тип: int, Edit2 - с m_b тип: int, Edit3 - с m_c тип: СString. Для Edit3 установить в закладке свойств Styles: свойство Multiline.
4) Также добавить 2 переменные min, max типа Double через Member Variables;
5) При помощи ClassWizard через закладку Member Variables связать идентификатор «переключателя» IDC_CHECK1, IDC_CHECK2 с переменными min,max тип: BOOL, а радиокнопки IDC_RADIO1 с переменной m_r тип: int. Кроме того, в самом начале метода BOOL RadioDlg::OnInitDialog() нужно установить значение переменной m_r =0;max=-999999999;min=999999999;
6) Теперь необходимо активировать кнопку «Выполнить». Для этого: выполнить щелчок правой клавишей мыши в любом месте диалоговой панели и в меню выбрать ClassWizard, выбрать закладку Message Maps, связать идентификатор IDC_Button1 с событием BN_CLICKED (один щелчок на кнопке), и добавить обработчик на данное событие: последовательно Add Function/OK/ Edit Code, среда добавит в конец файла Lab2Dlg.cpp пустой обработчик:
Текст обработчика:
void CRadioDlg::OnButton1()
{
m_r = 0;
double r,fun; CString str,fun_str,str2;
UpdateData(TRUE);
//Выберем функцию в соответствии с RadioButton'ами
switch (m_r){
case 0:
{fun = cos(m_a);
fun_str = "cos(x)";}
break;
case 1:
{fun = sin(m_a);
fun_str = "sin(x)";}
break;
case 2:
{fun = tan(m_a);
fun_str = "tg(x)";}
break;
}
//Рассчитываем функцию по условиям
if (m_a>m_b){
//----1
r = pow(fun-m_b,3)+atan(fun);
str.Format("(%s-y)^3+arctg(%s)= %.5lf",fun_str,fun_str,r);
} else
if (m_a<m_b){
//----2
r = pow(m_b-fun,3)+atan(fun);
str.Format("(y-%s)^3+arctg(%s)= %.5lf",fun_str,fun_str,r);
} else
{
//----3
r = pow(m_b+fun,3)+0.5;
str.Format("(y+%s)^3+0.5= %.5lf",fun_str,r);
}
//Добавляем max min если необходимо
if (m_min)
{
if (r<min) {min = r;}
str2.Format(" min=%.5lf",min);
str = str + str2;
}
if (m_max)
{
if (r>max) {max = r;}
str2.Format(" max=%.5lf",max);
str = str + str2;
}
//Переходим на новую строку
str = str + "\r\n";
//Добавляем строку
m_c = m_c + str;
UpdateData(FALSE);
}
Пример работы программы:
