- •Отчет по учебной практике
- •Оглавление
- •Html. Web – презентация с использованием css
- •Лабораторная работа № 1. Простейшее приложение
- •Лабораторная работа № 2. Клиентская область
- •Лабораторная работа № 3. Работа с таймером 1
- •Лабораторная работа №1. Простейшее приложение Windows Forms
- •Лабораторная работа №2. Наследование
- •Приложение 1 (html):
- •Приложение 2 (WinApi):
- •Приложение 3 (c#):
- •Список литературы:
Лабораторная работа № 1. Простейшее приложение
Цель: Познакомиться с WinAPI. Создать простейшие приложения
Краткие теоретические сведения:
WinMain – главная функция.
Функция имеет следующий прототип:
int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);
Параметры:
hWnd – дескриптор родительского окна. Он принимает
значение NULL, если родительского окна нет.
lpText – указатель на строку, содержащую текст
сообщения.
lpCaption — указатель на строку, содержащую текст
заголовка диалогового окна.
uType – параметр содержит комбинацию флагов,
задающих количество и типы кнопок в диалоговом окне, а
также наличие заданной пиктограммы.
MessageBox – функция создания окна.
Ellipse – функция для создания эллипса, другие функции для создания простейших геометрических фигур можно изучить с помощью специализированного справочника.
Задание:
1.1. В файле <winuser.h> найдите константы (MB_), задающие кнопки в диалоговом окне. Используйте их.
Учимся выводить информацию через окно сообщений: задайте целочисленный параметр в командной строке. Выведите его с помощью функции MessageBox()(sprintf()).
1.2. В файле <winuser.h> найдите константы (IDC_), которые являются идентификаторами стандартных курсоров. Используйте их.
Второй параметр функции ShowWindow(). Константы с префиксом SW_.
Нарисуйте красным цветом прямоугольник, границы которого находятся на расстоянии 20 пикселей от границ клиентской области окна.
Нарисуйте синим цветом эллипс, вписанный в клиентскую область окна.
Нарисуйте красным цветом эллипс, вписанный в прямоугольник.
Сделайте заливку внутреннего эллипса зеленым цветом.
Проведите две диагонали для клиентской области.
1.3. Выведите текст (названия углов) в четырех углах клиентской области, а в центре – свою фамилию.
Анализ реализации алгоритма:
1.1. Используем функцию MessageBox, которая создает и отображает на экране окно сообщений. В качестве соответствующего параметра функции укажем переменную, содержащую введенную с помощью консоли строку.
Исходный код:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR LpCmdLine, int nCmdShow)
{
MessageBox (NULL, "Hello, World!", "Caption", MB_OK);
MessageBox (NULL, "Do you like Win32API?", "Caption", MB_YESNO | MB_ICONQUESTION);
char buffer [25];
int a;
cin>>a;
sprintf(buffer, "%d", a);
MessageBox (NULL, buffer, "Caption", MB_OK);
return 0;
}
Результат: В ходе выполнения работы было создано простейшее приложение на WinApi. Результат работы можно найти в Приложении 2 (WinApi).
1.2. Для того, чтобы определить размер клиентской области, необходимо использовать функции LOWORD(lparam), HIWORD(lparam) при обработке сообщения WM_SIZE в основной функции WndProc. Создадим перья и кисти необходимого цвета с помощью функций CreatePen и CreateBrush. При обработке сообщения WM_PAINT получим контекст устройства с помощью команды BeginPaint.
Учитывая размеры клиентской области, создадим заданные фигуры посредством применения стандартных функций. Удалим созданные раннее перья и кисти, воспользовавшись функцией DeleteObject, и обозначим окончание обработки сообщения WM_PAINT командой EndPaint.
Исходный код:
SelectObject(hDC,hRedPen);
SelectObject(hDC,hRedBrush);
Rectangle(hDC,clientRECT.left+20,clientRECT.top+20,clientRECT.right-20,clientRECT.bottom-20);
По аналогии создаются остальные фигуры.
Результат: В ходе выполнения работы были созданы все необходимые фигуры. Выполнены дополнительные условия. Результат работы можно найти в Приложении 2 (WinApi).
1.3. Для создания текстовых вставок следует использовать функцию TextOut. Все действия аналогичны порядку создания программы при решении задачи 1.2.
Исходный код:
TextOut(hDC, clientRECT.right-105, clientRECT.bottom-15, "Нижний правый", 13);
TextOut(hDC, (clientRECT.right-clientRECT.left)/2-23, (clientRECT.bottom-clientRECT.top)/2-7, "Ковалёва", 8);
По аналогии создаются остальные надписи.
Результат: В ходе выполнения работы была создана программа, выполняющая необходимые действия. Результат работы можно найти в Приложении 2 (WinApi).
Выводы: Познакомилась с работой Win API, научилась создавать простейшие приложения. Познакомилась с функциями MessageBox()(sprintf()), GetClientRect(), Ellipse() и др.
