Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТРПОСУ Вар9.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
380.63 Кб
Скачать

Для работы был использован Microsoft Visual C++ 6.0

Лабораторная работа №9. Интерфейс графических устройств Windows

Цель лабораторной работы: изучить методы работы с графическим интерфейсом (GDI). Научиться строить простые геометрические фигуры.

И ндивидуальные задания:

  1. Создаем диалоговую панель, для этого переходим через главную панель File->New. Далее выбираем MFC AppWizard (exe) вводим имя в «Project name» - Draw , нажимаем ОК

  1. Выбираем Dialog Based и жмем Next

  1. Убираем галочку с About Box и жмем Finish, остальные окна нас не интересуют

  1. С помощью панели

Выбираем Button и располагаем на панели следующим образом:

для изменения подписи кнопки выбираем правой клавишей Properties и вводим:

  1. В обработчике кнопки , который вызывается двойным щелчком по соответствующей кнопке

пишем код программы

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);

}

Пример работы программы: