Контрольна робота з «Системне програмування»
Автор: Яна Сабада • Декабрь 1, 2021 • Контрольная работа • 5,217 Слов (21 Страниц) • 279 Просмотры
Міністерство освіти та науки України
Контрольна робота
Варіант №1
з дисципліни: «Системне програмування»
Харків, 2020
Варіант 1
Завдання 1 Написати з використанням функцій API програму, що створює віконне додаток Windows. Програма повинна містити реєстрацію класу вікна, процедуру створення вікна, віконну процедуру і цикл обробки повідомлень. Програма повинна виводити в клієнтської області вікна прізвище, ім'я, групу студента, який виконав завдання і перемальовувати її при обробці повідомлення WM_PAINT.
Стиль класу: вирівнювання клієнтської області по горизонталі;
Тип завантажується іконки: IDI_APPLICATION,
Тип завантажується курсору: IDC_ARROW,
Колір фону вікна: БІЛИЙ,
Ім'я класу вікна: ім'я студента (англійською мовою).
Стиль вікна: а) вікно має заголовок і обрамляє рамку; б) WS_OVERLAPPEDWINDOW.
Позиція вікна: за замовчуванням.
Код програми:
#include <windows.h> // підключення бібліотеки з функціями API
// Глобальні змінні:
HINSTANCE hInst; //Дескриптор програми
LPCTSTR szWindowClass = "SabadaAzarenko";
LPCTSTR szTitle = "ПЕРША ПРОГРАМА";
// Попередній опис функцій
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
// Основна програма
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
// Реєстрація класу вікна
MyRegisterClass(hInstance);
// Створення вікна програми
if (!InitInstance(hInstance, nCmdShow))
{
return FALSE;
}
// Цикл обробки повідомлень
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW; //стиль вікна
wcex.lpfnWndProc = (WNDPROC)WndProc; //віконна процедура
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance; //дескриптор програми
wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION); //визначення іконки
wcex.hCursor = LoadCursor(NULL, IDC_ARROW); //визначення курсору
wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //установка фону
wcex.lpszMenuName = NULL; //визначення меню
wcex.lpszClassName = szWindowClass; //ім’я класу
wcex.hIconSm = NULL;
return RegisterClassEx(&wcex); //реєстрація класу вікна
}
// FUNCTION: InitInstance (HANDLE, int)
// Створює вікно програми і зберігає дескриптор програми в змінній hInst
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
hInst = hInstance; //зберігає дескриптор додатка в змінній hInst
hWnd = CreateWindow(szWindowClass, // ім’я класу вікна
szTitle, // назва програми
...