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

Лабораторная работа № 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() и др.