HTML. Web – презентация с использованием CSS.
Отчет
По учебной практике
студентки 1 курса 11 группы
Преподаватель
Безверхий Александр Анатольевич
Старший преподаватель кафедры ИСУ
Минск 2016
Оглавление
HTML. Web – презентация с использованием CSS.3
WinApi6
Лабораторная работа №1. Простейшее приложение 6
Лабораторная работа №2. Клиентская область 9
Лабораторная работа №4. Работа с таймером 13
Индивидуальное задание. Создание анимации 19
С#21
Лабораторная работа №1. Простейшее приложение Windows Forms 21
Лабораторная работа №2. Перекодировка текстового файла 24
Приложение 1. HTML 26
Приложение 2. WinApi 28
Приложение 3. C#41
Список литературы44
Анализ реализации алгоритма
Для выполнения первого задания данной лабораторной работы я использовала константы (MB_) для создания кнопок в диалоговом окне и функции MessageBox() и sprintf() для вывода целочисленных констант.
Исходный код:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR LpCmdLine, int nCmdShow)
{
MessageBox (NULL, "Hello!", "Caption", MB_OK);
MessageBox (NULL, "Do you want to delete?", "Caption", MB_YESNO | MB_ICONQUESTION);
MessageBox (NULL, "Error!!!", "Caption", MB_RETRYCANCEL | MB_ICONERROR);
char buffer [50];
int a;
cin >> a;
sprintf(buffer, "%d", a);
MessageBox (NULL, buffer, "Caption", MB_OK);
return 0;
}
Скриншоты реализации можно просмотреть в приложении 2.
Для выполнения второго задания я использовала функции CreatePen() и CreateSolidBrush() для создания перьев и кистей и функции GetClientRect для получения клиентской области; Ellipse() и Rectangle() для прорисовки эллипса и прямоугольника; функции MoveToEx() и LineTo() для прорисовки диагоналей; функцию TextOut() для вывода текста.
Исходный код:
RECT cRect;
GetClientRect(hwnd, &cRect);
Ellipse(hDC,0,0,cxClient,cyClient); //эллипс
Rectangle(hDC,20,20,cxClient-20,cyClient-20);//прямоугольник
MoveToEx(hDC, pt[0].x, pt[0].y, NULL);
LineTo(hDC, pt[1].x, pt[1].y);
TextOut(hDC, cxClient/2 - 45, cyClient/2, "Герман Полина", 13);
Скриншоты реализации можно просмотреть в приложении 2.
Выводы:Познакомилась с работой Win API, научилась создавать простейшие приложения. Познакомилась с функциями MessageBox()(sprintf()), GetClientRect(), Ellipse() и др.
Анализ реализации алгоритма
В первом задании для обеспечения движения автомобиля по наклонной плоскости используем объект класса XFORM, позволяющий изменить систему координат. Чтобы показать вращение колес, применяю соответствующие тригонометрические функции. Используя специальные переменные при обработке сообщения WM_TIMER, придадим машине ускорение.
Исходный код:
lpXform.eM11 = sin(t);
lpXform.eM21 = cos(t);
lpXform.eM22 = -sin(t);
lpXform.eM12 = cos(t);
Rectangle(hdc, x - 120, -70, x - 20, -10);
Rectangle(hdc, x - 20, -70, x + 10, 10);
DeleteObject(hbrush1);
hbrush1 = CreateSolidBrush(RGB(255, 255, 0));
SelectObject(hdc, hbrush1);
Ellipse(hdc, x - 100, -80, x - 80, -60);
Ellipse(hdc, x - 30, -80, x - 10, -60);
DeleteObject(hbrush1);
Line(hdc, (x - 90) + 10 * sin(-x / 10), -80 + (10 - 10 * cos(-x / 10)), (x - 90) - 10 * sin(-x / 10), -(10 - 10 * cos(-x / 10)) - 60);
Line(hdc, (x - 20) + 10 * sin(-x / 10), (-80) + (10 - 10 * cos(-x / 10)), (x - 20) - 10 * sin(-x / 10), -(10 - 10 * cos(-x / 10)) - 60);
Скриншоты реализации можно просмотреть в приложении 2.
В третьем задании я изобразила несколько возможных состояний светофора. Переключение между ними происходит посредством счетчика, обработываемого в WM_TIMER.
Исходный код:
case WM_TIMER:
{
A[0]->red = A[1]->red = A[1]->green = A[2]->green = 100;
switch (Color)
{
case Red:
A[0]->red += 150;
Color = Yellow;
break;
case Yellow:
A[1]->red += 150;
A[1]->green += 150;
Color = Green;
break;
case Green:
A[2]->green += 150;
Color = Red;
break;
}
InvalidateRect (hWnd, NULL, true);
break;
}
Скриншоты реализации можно просмотреть в приложении 2.
В третьем задании, используя специально описанную структуру Circle, по нажатию соответствующей клавиши мыши изменяю значения ее полей. Для работы с неколькими кругами использую вектор заданного типа Circle. Нажатие левой клавиши мыши обрабатывается посредтсвом WM_LBUTTONDOWN, правой клавиши - WM_RBUTTONDOWN.
Исходный код:
case WM_LBUTTONDOWN:
{
hdc = GetDC(hWnd);
xMs = GET_X_LPARAM(lParam);
yMs = GET_Y_LPARAM(lParam);
COLORREF MsClick = GetPixel(hdc, xMs, yMs);
for (int i = 0; i < 3; ++i)
{
if ( MsClick == RGB(A[i]->red, A[i]->green, A[i]->blue) && condition[i] == NoBlink)
condition[i] = BlinkStandart;
}
InvalidateRect (hWnd, NULL, true);
break;
}
WM_RBUTTONDOWN работает аналогично.
Скриншоты реализации можно просмотреть в приложении 2.
В четвертом задании изобразили график и оси. Для того, чтобы определить, в какую часть клиентской области указал мышью пользователь, рассмотривается цвет соответствующего пикселя. Если он совпадает с цветом графика, то, можно пересчитать координаты графика и вывести их на экран с помощью текстового сообщения.
Исходный код:
case WM_CREATE:
{
GetClientRect(hwnd, &R);
T = new Table(R, marg,a,b);
F = new Function (T->GetCell(), T->GetMarg(), a, b);
}
case WM_PAINT:
{
hDC = GetDC(hwnd);
hDC = BeginPaint(hwnd, &ps);
GetClientRect(hwnd, &R);//
T = new Table(R, marg,a,b);//
F = new Function (T->GetCell(), T->GetMarg(), a, b);//
Point = T->DrawingTable(hDC);
F->Drawing(hDC, Point, Func);
EndPaint(hwnd, &ps);
break;
}
case WM_LBUTTONDOWN:
{
hDC = GetDC(hwnd);
xMs = GET_X_LPARAM(lParam);
yMs = GET_Y_LPARAM(lParam);
GetClientRect(hwnd, &R);//
T = new Table(R, marg,a,b);//
F = new Function (T->GetCell(), T->GetMarg(), a, b);//
Point = T->DrawingTable(hDC);//
if( F->HitTheTarget(xMs, yMs, Point, Func))
{
P = F->GetCoordinates(xMs, yMs, Point, Func);
F->DrawCoordinates(hDC, xMs, yMs, P);
}
break;
}
Скриншоты реализации можно просмотреть в приложении 2.
В пятом задании, произвольно определяя координату x, буду рассчитывать координату y с помощью функции синуса. Рассчитанные координаты считаю центром нашего круга. Радиус-вектор перемещаю, используя тригонометрические функции.
Исходный код:
void SetXC (double x0, int PixToCM)
{
double r = (double)R/PixToCM;
double cosin = cos(x0);
double xCG = x0 - r*cosin/sqrt(cosin*cosin+1);
double yCG = sin(x0) + sqrt(r*r - (x0-xCG)*(x0-xCG));
xC = xCG*PixToCM;
yC = rect.bottom/2 - (int)(yCG*PixToCM);
double xNEW = r*cos(alpha)+xCG, yNEW = r*sin(alpha)+yCG;
xN = xNEW*PixToCM;
yN = rect.bottom/2 - (int)(yNEW*PixToCM);
}
case WM_PAINT:
{
hdc = BeginPaint(hWnd,&ps);
int PixToCM = rect.right/15;
C.SetXC((double)x0/PixToCM, PixToCM);
HBRUSH hbro, hbr = CreateSolidBrush(C.Color);
hbro = (HBRUSH)SelectObject(hdc,hbr);
Ellipse (hdc, C.xC-C.R, C.yC-C.R, C.xC+C.R, C.yC+C.R);
DeleteObject(SelectObject(hdc,hbro));
HPEN oldpen, pen = CreatePen(PS_SOLID, 1, RGB(255,255,255));
oldpen = (HPEN)SelectObject (hdc, pen);
MoveToEx(hdc, C.xC, C.yC, 0);
LineTo(hdc, C.xN, C.yN);
DeleteObject(SelectObject(hdc,oldpen));
for (int i=0; i<=rect.right; i++)
{
double xG, yG;
int yP;
xG = (double)i/PixToCM;
yG = sin(xG);
yP = yG*PixToCM;
SetPixel(hdc, i, rect.bottom/2 - yP, RGB(200,0,0));
}
EndPaint(hWnd,&ps);
break;
}
Скриншоты реализации можно просмотреть в приложении 2.
Выводы:Использовав функцииInvalidateRect, SetTimer, KillTimer, ReleaseCapture, описанные в кратких теоретических сведениях, а также функции BeginPaint, EndPaint, MessageBox, Ellipse и другие, изученные ранее, научилась обрабатывать события.
Индивидуальное задание. Создание анимации
Цель:Научиться создавать анимации при помощи WinApi.
Краткие теоретические сведения:Для выполнения данного индивидульного задания необходимо использовать навыки, приобретенные при выполнении предыдущих заданий.
Задание.Необходимо создать следующую анимацию:
В лесу танцует избушка на курьих ножках. По нажатию клавиши пробел в окошке появляется баба Яга и затем вылетает из него.
Анализ реализации алгоритма:
Для начала я выбрала подходящий фон. Затем выбрала подходящее изображение избушки и создала его зеркальное отображение, чтобы затем показать танец, меняя эти изображения. Используя приложение Paint, я нарисовала бабу Ягу в окне избушки. Затем, указав начальное положение бабы Яги в окошке, и после этого меняя ее положение, я изобразила вылет бабы Яги из окошка.
Исходный код:
case WM_KEYDOWN:
switch (wParam){
case VK_SPACE:
run = false;
break;
}
break;
case WM_PAINT:
GetClientRect(hWnd, &rect);
hdc = BeginPaint(hWnd, &ps);
hdc2 = CreateCompatibleDC(hdc);
SelectObject(hdc2, hFon);
StretchBlt(hdc, 0, 0, rect.right, rect.bottom, hdc2, 0, 0, fon.bmWidth, fon.bmHeight, SRCCOPY);
DeleteDC(hdc2);
hdc2 = CreateCompatibleDC(hdc);
if (tick%20>=0 && tick%20<10 && dance){
SelectObject(hdc2, hHouse1);
TransparentBlt(hdc, rect.right/3, rect.bottom/4, rect.right/3,rect.bottom*2/3, hdc2, 0, 0,house1.bmWidth, house1.bmHeight, RGB(255,255,255));}
else if (tick%20>=10 && dance){
SelectObject(hdc2, hHouse);
TransparentBlt(hdc, rect.right/3, rect.bottom/4, rect.right/3,rect.bottom*2/3, hdc2, 0, 0,house.bmWidth, house.bmHeight, RGB(255,255,255));}
else if (!dance && tick<=30){
SelectObject(hdc2, hHouse1);
TransparentBlt(hdc, rect.right/3, rect.bottom/4, rect.right/3,rect.bottom*2/3, hdc2, 0, 0,house1.bmWidth, house1.bmHeight, RGB(255,255,255));}
else if (!dance && tick>30 && tick<71){
SelectObject(hdc2, hHouse2);
TransparentBlt(hdc, rect.right/3, rect.bottom/4, rect.right/3,rect.bottom*2/3, hdc2, 0, 0,house1.bmWidth, house2.bmHeight, RGB(255,255,255));}
else if (!dance && go){
SelectObject(hdc2, hHouse1);
TransparentBlt(hdc, rect.right/3, rect.bottom/4, rect.right/3,rect.bottom*2/3, hdc2, 0, 0,house1.bmWidth, house1.bmHeight, RGB(255,255,255));}
DeleteDC(hdc2);
if (go){
hdc2 = CreateCompatibleDC(hdc);
SelectObject(hdc2, hLady);
TransparentBlt( hdc, pos1.x, pos1.y, rect.right/5,rect.bottom/3, hdc2, 0, 0,lady.bmWidth, lady.bmHeight, RGB(255,255,255));
DeleteDC(hdc2);
}
EndPaint(hWnd, &ps);
break;
Скриншоты реализации можно просмотреть в приложении 2.
Выводы:Использовав навыки, приобретенные при выполнении предыдущих заданий, я создала анимацию при помощи WinApi.
С#
Лабораторная работа №1. Простейшее приложение Windows Forms
Цель:Изучить способы работы с текстовыми файлами в C#. Рассмотреть создание диаграмм, меню, диалоговых окон средствами C#.
Краткие теоретические сведения:
Класс Form представляет собой заготовку формы, от которой наследуются классы форм приложения. Помимо множества унаследованных элементов, в этом классе определено большое количество собственных элементов. В библиотеке .NET нет специального класса для представления диалоговых окон. Вместо этого устанавливаются определенные значения свойств в классе обычной формы. В диалоговом окне можно располагать те же элементы управления, что и на обычной форме. Для вывода линий, геометрических фигур, текста и изображений необходимо создатьэкземпляр класса Graphics, описанного в пространстве имен System.Drawing.
Задание:Разработайте приложение Windows Forms при помощи MS Visual Studio C#.
При реализации интерфейса следуйте рекомендациям стандарта CUI (Common User Interface).
Программа должна иметь главное меню, строку состояния и клиентскую область (область рисования).
Главное меню приложения обязательно должно содержать следующие команды (в формате Подменю/Команда):
– File/Open - выбор файла
– File/Quit - завершение приложения после подтверждения пользователя
– Help/About - вывод диалогового окна которое печатает условие задачи и информацию о разработчике (ФИО студента, группа, курс, факультет, ВУЗ)
– (команды) - команды необходимые для решения вашей задачи, например, View/Fonts для выбора шрифта, View/Colors для настройки цвета и т.п.
Постройте диаграмму опроса в сети отображающую процентное соотношение проголосовавших.
Входные данные хранятся в текстовом файле. Первая строка файла содержит наименование опроса. Каждая последующая строка файла содержит количество проголосовавших, затем, через пробел и до конца строки текст, соответствующий опции опроса.
Для выбора файла входных данных использовать стандартный диалог.
Анализ реализации алгоритма:
Для создания макета диалогового окна я использовала панель элементов. Используя специальные классы C#, такие как openFileDialog, обеспечила взаимодействие приложения и файловой системы, тем самым предоставляя пользователю возможность указать файл с исходными данными.
Исходный код:
private void ReadData()
{
ClearValues();
using (StreamReader SourceFile = new StreamReader(FileName, System.Text.Encoding.GetEncoding(1251)))
{
string Temp;
NameOfPoll = SourceFile.ReadLine();
int Sum = 0;
while (!SourceFile.EndOfStream)
{
Temp = SourceFile.ReadLine();
int index = Temp.IndexOf(' ');
string StrNum = Temp.Substring(0, index);
Sum += Int32.Parse(StrNum);
CountsOfPoll.Add(Int32.Parse(StrNum));
ModelsOfPoll.Add(Temp.Substring(index + 1));
}
int SumPercents = 0;
for (int i = 0; i < CountsOfPoll.Count - 1; i++)
{
PercentsOfPoll.Add((int)Math.Round(100 * (double)CountsOfPoll[i] / Sum));
SumPercents += PercentsOfPoll[i];
}
PercentsOfPoll.Add(100 - SumPercents);
this.Text = NameOfPoll;
}
}
private void FillDiagram()
{
chart1.Series.Clear();
Series series = new Series();
series.ChartType = SeriesChartType.Pie;
chart1.Series.Add(series);
chart1.Series[0].Points.DataBindXY(ModelsOfPoll, PercentsOfPoll);
chart1.Series[0].IsValueShownAsLabel = true;
}
Результат работы программы можно увидеть в приложении 3.
Выводы:Я изучила способы работы с текстовыми файлами в C#. Рассмотрела создание диаграмм, меню, диалоговых окон средствами C#.
Приложение 2
Рис. 1.1.1. Скриншот использования констант (MB_), задающих кнопки в диалоговом окне
Рис. 1.1.2. Скриншот вывода целочисленных констант
Рис. 1.2.1. Скриншот использования функций GetClientRect() и Ellipse()
Рис. 1.2.2. Скриншот использования функций MoveToEx() и LineTo()
Рис.1.2.3 Скриншот использования функций MoveToEx(), LineTo() и TextOut()
Рис.2.1.1. Скриншот разбиения клиентской области на 6 частей
Рис.2.1.2. Скриншот вывода стандартных фигур; построение ромба и треугольника.
Рис. 2.1.3. Скриншот готового приложения
Рис.2.2.1. Скриншот создания таблицы
Рис.2.2.1. Скриншот заполненной таблицы (готового приложения)
Рис.2.3.1. Скриншот готового приложения
Рис. 2.4.1. и 2.4.2. Скриншоты готового приложения
Рис. 4.1.1 и 4.1.2. Скриншоты готового приложения
Рис. 4.2.1., 4.2.2 и 4.2.3. Скриншоты готового приложения во время работы
Рис. 4.3.1. Скриншот начального состояния приложения
Рис. 4.3.2. Скриншот работы готового приложения («Мигание» шариков)
Рис. 4.4.1. Скриншот нарисованного графика
Рис. 4.4.2. Скриншот графика с определенными координатами некоторых точек.
Рис. 4.5.1 и 4.5.2. Скриншоты работы приложения
Рис. 5.1-5.5. Скриншоты демонстрации работы готового приложения
Приложение 3
Рис. 1.1. Скриншот диаграммы
Рис. 1.2. Скриншот окна About
Рис. 1.3. Скриншот завершения программы.
Рис. 2.1. Скриншот выбор кодировки входного файла
Рис. 2.2. Скриншот входного файла с кодировкой Windows-1251 и выходного файла с кодировкой IBM-866
Список литературы:
1. Хасеневич, И. С. Создание Web-страниц средствами HTML и CSS: учеб.метод. пособие длястудентовспец. 1-190101 «Дизайн». В 2ч. Ч. 1. Введение в HTML/И. С. Хасеневич. – Минск : БГУ, 2012. –35с.
2. Хасеневич, И. С. Создание Web-страниц средствами HTML и CSS: учеб.-метод. пособие для студентов спец. 1-19 01 01 «Дизайн». В 2 ч. Ч. 2. Вве-дение в CSS / И. С. Хасеневич. – Минск : БГУ, 2012. – 35 с
3. Щупак, Ю.А. Win32 API. Эффективная разработка приложений / Ю.А. Щупак — СПб: Питер, 2007. — 573 с.
4. Павловская Т. А. С#. Программирование на языке высокого уровня. Учебник для вузов. —СПб.: Питер, 2009. — 432 с.: ил.
Отчет
По учебной практике
студентки 1 курса 11 группы
Преподаватель
Безверхий Александр Анатольевич
Старший преподаватель кафедры ИСУ
Минск 2016
Оглавление
HTML. Web – презентация с использованием CSS.3
WinApi6
Лабораторная работа №1. Простейшее приложение 6
Лабораторная работа №2. Клиентская область 9
Лабораторная работа №4. Работа с таймером 13
Индивидуальное задание. Создание анимации 19
С#21
Лабораторная работа №1. Простейшее приложение Windows Forms 21
Лабораторная работа №2. Перекодировка текстового файла 24
Приложение 1. HTML 26
Приложение 2. WinApi 28
Приложение 3. C#41
Список литературы44
HTML. Web – презентация с использованием CSS.
Цель:Изучить основы HTML. Ознакомиться со средствами разработки CSS. Освоить основные методы обработки и редактирования видео. Рассмотреть способы создания Web-приложений и сайтов в сети Интернет.
Краткие теоретические сведения:
HTML и CSS — основные языки разметки и стилей, с помощью которых разрабатываются веб-страницы. Язык HTML интерпретируется браузерами; полученный в результате интерпретации форматированный текст отображается на экране монитора компьютера или мобильного устройства. Язык HTML является приложением SGML (стандартного обобщённого языка разметки) и соответствует международному стандарту ISO 8879. Язык XHTML является более строгим вариантом HTML, он следует всем ограничениям XML и, фактически, XHTML можно воспринимать как приложение языка XML к области разметки гипертекста.
CSS используется создателями веб-страниц для задания цветов, шрифтов, расположения отдельных блоков и других аспектов представления внешнего вида этих веб-страниц. Основной целью разработки CSS являлось разделение описания логической структуры веб-страницы (которое производится с помощью HTML или других языков разметки) от описания внешнего вида этой веб-страницы (которое теперь производится с помощью формального языка CSS). Такое разделение может увеличить доступность документа, предоставить большую гибкость и возможность управления его представлением, а также уменьшить сложность и повторяемость в структурном содержимом.
Задание:Создать многостраничное Web – приложение (сайт свадебного салона) с использованием видеоматериалов, таблицы стилей.
Анализ реализации алгоритма:
Для создания единого стиля страниц и оптимизации кода разработаем шаблон формата CSS. Укажем в нем стили выравнивания текста и изображений, шрифты заголовков и основного текста страниц, границы используемых картинок с возможностью их масштабирования.
Исходный код:
<!-- style.css -->
a
{
text-decoration: none;
}
html{
min-height:100%;
}
body {
background-color: #FDF5E6;
}
.Navigation{
height: 50px;
padding: 0;
margin: 0;
position: fixed;
}
.Navigation li {
height: auto;
width: 200px;
float: left;
text-align: center;
list-style: none;
font:22px "Monotype Corsiva", "Century Gothic";
padding: 0;
margin: 0;
background-color: #F6E3CE;
border: 1px solid white;
box-shadow: 0 1px 0 rgba(255,255,255, .9) inset, 0 1px 3px rgba(0,0,0, .1);
border-radius: 3px;
margin-left: 20px;
}
.Navigation li ul{
display: none;
height: auto;
margin-left: -11px;
padding: 0;
}
.Navigation li:hover ul{
display: block;
}
.navbar li ul li {
background-color:#F6E3CE;
border: 1px solid #ccc;
}
.Navigation li:hover, a:hover {
background: #F6E3CE;
}
.td1 {
background-image: url(img/ff.jpg);
background-repeat: no-repeat;
}
.p1 {
font-weight: bold;
color: black;
font-size: 30px;
font-family: "Monotype Corsiva";
line-height: 0.5;
}
На каждой из тематических страниц Web-приложения находится соответствующая информация. Для обеспечения навигации используем некоторые изображения и фрагменты текста в качестве гиперссылок. Все страницы должны имеют связь с главной страницей и между собой. Внизу каждой страницы находится кнопка «наверх», для быстрого перемещения в начало страницы. Сгруппировать информацию, используемую на странице, можно с помощью разметки таблицей (теги <table>, <tr> и <td>). Для повышения информативности Web-приложения используем тематические видеоматериалы, предварительно отредактированные в соответствующей программе (Adobe Premiere Pro CC 2015.0).
Скриншоты проделанной работы можно увидеть в приложении 1.
Выводы:Изучила основы HTML. Научилась создавать Web – страницы, а также переходы между ними, вставлять изображения, ссылки на внешние ресурсы, таблицы. Рассмотрела возможности CSS. Освоил основные способы обработки и редактирования видео.
Лабораторная работа № 1. Простейшее приложение
Цель:Познакомиться с WinAPI. Создать простейшие приложения
Краткие теоретические сведения:
WinMain – главная функция.
Функция имеет следующий прототип:
int MessageBox(HWNDhWnd, LPCTSTRlpText,LPCTSTRlpCaption, UINTuType);
Параметры:
hWnd – дескриптор родительского окна. Он принимает значение NULL, если родительского окна нет.
lpText – указатель на строку, содержащую текст сообщения.
lpCaption — указатель на строку, содержащую текст заголовка диалогового окна.
uType – параметр содержит комбинацию флагов,задающих количество и типы кнопок в диалоговом окне, а также наличие заданной пиктограммы.
MessageBox – функция создания окна.
Ellipse – функция для создания эллипса, другие функции для создания простейших геометрических фигур можно изучить с помощью специализированного справочника.
Задание:
1.1Наипростейшая программа Windows. В файле <winuser.h> найдите константы (MB_), задающие кнопки в диалоговом окне. Используйте их. Учимся выводить информацию через окно сообщений: задайте целочисленный параметр в командной строке. Выведите его с помощью функции MessageBox()(sprintf()).
1.2Простейшее Windows-приложение. В файле <winuser.h> найдите константы (IDC_), которые являются идентификаторами стандартных курсоров. Используйте их. Второй параметр функции ShowWindow(). Константы с префиксом SW_.
Нарисуйте красным цветом прямоугольник, границы которого находятся на расстоянии 20 пикселей от границ клиентской области окна.
Нарисуйте синим цветом эллипс, вписанный в клиентскую область окна.
Нарисуйте красным цветом эллипс, вписанный в прямоугольник. Сделайте заливку внутреннего эллипса зеленым цветом.
Проведите две диагонали для клиентской области.
1.3Выведите текст (названия углов) в четырех углах клиентской области, а в центре – свою фамилию.
Анализ реализации алгоритма
Для выполнения первого задания данной лабораторной работы я использовала константы (MB_) для создания кнопок в диалоговом окне и функции MessageBox() и sprintf() для вывода целочисленных констант.
Исходный код:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR LpCmdLine, int nCmdShow)
{
MessageBox (NULL, "Hello!", "Caption", MB_OK);
MessageBox (NULL, "Do you want to delete?", "Caption", MB_YESNO | MB_ICONQUESTION);
MessageBox (NULL, "Error!!!", "Caption", MB_RETRYCANCEL | MB_ICONERROR);
char buffer [50];
int a;
cin >> a;
sprintf(buffer, "%d", a);
MessageBox (NULL, buffer, "Caption", MB_OK);
return 0;
}
Скриншоты реализации можно просмотреть в приложении 2.
Для выполнения второго задания я использовала функции CreatePen() и CreateSolidBrush() для создания перьев и кистей и функции GetClientRect для получения клиентской области; Ellipse() и Rectangle() для прорисовки эллипса и прямоугольника; функции MoveToEx() и LineTo() для прорисовки диагоналей; функцию TextOut() для вывода текста.
Исходный код:
RECT cRect;
GetClientRect(hwnd, &cRect);
Ellipse(hDC,0,0,cxClient,cyClient); //эллипс
Rectangle(hDC,20,20,cxClient-20,cyClient-20);//прямоугольник
MoveToEx(hDC, pt[0].x, pt[0].y, NULL);
LineTo(hDC, pt[1].x, pt[1].y);
TextOut(hDC, cxClient/2 - 45, cyClient/2, "Герман Полина", 13);
Скриншоты реализации можно просмотреть в приложении 2.
Выводы:Познакомилась с работой Win API, научилась создавать простейшие приложения. Познакомилась с функциями MessageBox()(sprintf()), GetClientRect(), Ellipse() и др.