From bd0c75a31de84ccd5c4d60d1ca2473dab06b5014 Mon Sep 17 00:00:00 2001 From: "d.yarmukhin" Date: Mon, 23 Dec 2024 14:04:12 +0400 Subject: [PATCH] 1234 --- Laba.1/Laba.1/Source.c | 420 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 406 insertions(+), 14 deletions(-) diff --git a/Laba.1/Laba.1/Source.c b/Laba.1/Laba.1/Source.c index af07eb6..3d51bea 100644 --- a/Laba.1/Laba.1/Source.c +++ b/Laba.1/Laba.1/Source.c @@ -1,16 +1,408 @@ -#include -#include +// WindowsProject2.cpp : Определяет точку входа для приложения. +// -void main() { - SetConsoleCP(1252); - SetConsoleOutputCP(1251); +#include "framework.h" +#include "WindowsProject2.h" + +#define MAX_LOADSTRING 100 + +// Глобальные переменные: +HINSTANCE hInst; // текущий экземпляр +WCHAR szTitle[MAX_LOADSTRING]; // Текст строки заголовка +WCHAR szWindowClass[MAX_LOADSTRING]; // имя класса главного окна + +// Отправить объявления функций, включенных в этот модуль кода: +ATOM MyRegisterClass(HINSTANCE hInstance); +BOOL InitInstance(HINSTANCE, int); +LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); +INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); + +int APIENTRY wWinMain(_In_ HINSTANCE hInstance, + _In_opt_ HINSTANCE hPrevInstance, + _In_ LPWSTR lpCmdLine, + _In_ int nCmdShow) +{ + UNREFERENCED_PARAMETER(hPrevInstance); + UNREFERENCED_PARAMETER(lpCmdLine); + + // TODO: Разместите код здесь. + + // Инициализация глобальных строк + LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); + LoadStringW(hInstance, IDC_WINDOWSPROJECT2, szWindowClass, MAX_LOADSTRING); + MyRegisterClass(hInstance); + + // Выполнить инициализацию приложения: + if (!InitInstance (hInstance, nCmdShow)) + { + return FALSE; + } + + HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT2)); + + MSG msg; + + // Цикл основного сообщения: + while (GetMessage(&msg, nullptr, 0, 0)) + { + if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + } + + return (int) msg.wParam; +} + + + +// +// ФУНКЦИЯ: MyRegisterClass() +// +// ЦЕЛЬ: Регистрирует класс окна. +// +ATOM MyRegisterClass(HINSTANCE hInstance) +{ + WNDCLASSEXW wcex; + + wcex.cbSize = sizeof(WNDCLASSEX); + + wcex.style = CS_HREDRAW | CS_VREDRAW; + wcex.lpfnWndProc = WndProc; + wcex.cbClsExtra = 0; + wcex.cbWndExtra = 0; + wcex.hInstance = hInstance; + wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT2)); + wcex.hCursor = LoadCursor(nullptr, IDC_ARROW); + wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); + wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT2); + wcex.lpszClassName = szWindowClass; + wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); + + return RegisterClassExW(&wcex); +} + +// +// ФУНКЦИЯ: InitInstance(HINSTANCE, int) +// +// ЦЕЛЬ: Сохраняет маркер экземпляра и создает главное окно +// +// КОММЕНТАРИИ: +// +// В этой функции маркер экземпляра сохраняется в глобальной переменной, а также +// создается и выводится главное окно программы. +// +BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) +{ + hInst = hInstance; // Сохранить маркер экземпляра в глобальной переменной + + HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, + CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr); + + if (!hWnd) + { + return FALSE; + } + + ShowWindow(hWnd, nCmdShow); + UpdateWindow(hWnd); + + return TRUE; +} + +// +// ФУНКЦИЯ: WndProc(HWND, UINT, WPARAM, LPARAM) +// +// ЦЕЛЬ: Обрабатывает сообщения в главном окне. +// +// WM_COMMAND - обработать меню приложения +// WM_PAINT - Отрисовка главного окна +// WM_DESTROY - отправить сообщение о выходе и вернуться +// +// +LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + switch (message) + { + case WM_COMMAND: + { + int wmId = LOWORD(wParam); + // Разобрать выбор в меню: + switch (wmId) + { + case IDM_ABOUT: + DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); + break; + case IDM_EXIT: + DestroyWindow(hWnd); + break; + default: + return DefWindowProc(hWnd, message, wParam, lParam); + } + } + break; + case WM_PAINT: { + PAINTSTRUCT ps; + HDC hdc = BeginPaint(hWnd, &ps); + HPEN hPen; + hPen = CreatePen(PS_SOLID, 5, RGB(99, 66, 00)); + SelectObject(hdc, hPen); + MoveToEx(hdc, 150, 350, NULL); + LineTo(hdc, 275, 250); + LineTo(hdc, 400, 350); + + LineTo(hdc, 400, 525); + LineTo(hdc, 150, 525); + LineTo(hdc, 150, 350); + LineTo(hdc, 400, 350); + + MoveToEx(hdc, 225, 400, NULL); + LineTo(hdc, 225, 475); + LineTo(hdc, 325, 475); + LineTo(hdc, 325, 400); + LineTo(hdc, 225, 400); + + MoveToEx(hdc, 275, 400, NULL); + LineTo(hdc, 275, 475); + MoveToEx(hdc, 275, 425, NULL); + LineTo(hdc, 325, 425); + //машина + hPen = CreatePen(PS_SOLID, 5, RGB(00, 1212, 00)); + SelectObject(hdc, hPen); + MoveToEx(hdc, 450, 525, NULL); + LineTo(hdc, 525, 450); + LineTo(hdc, 600, 525); + LineTo(hdc, 450, 525); + + hPen = CreatePen(PS_SOLID, 5, RGB(00, 1212, 00)); + SelectObject(hdc, hPen); + MoveToEx(hdc, 525, 400, NULL); + LineTo(hdc, 475, 450); + LineTo(hdc, 575, 450); + LineTo(hdc, 525, 400); + + hPen = CreatePen(PS_SOLID, 5, RGB(00, 1212, 00)); + SelectObject(hdc, hPen); + MoveToEx(hdc, 525, 375, NULL); + LineTo(hdc, 500, 400); + LineTo(hdc, 550, 400); + LineTo(hdc, 525, 375); + + hPen = CreatePen(PS_SOLID, 3, RGB(00, 1212, 00)); + SelectObject(hdc, hPen); + + HBRUSH hBrush; + hBrush = CreateSolidBrush(RGB(255, 128, 67)); + SelectObject(hdc, hBrush); + + Rectangle(hdc, 50, 100, 300, 150); + + MoveToEx(hdc, 100, 100, 0); + LineTo(hdc, 150, 50); + LineTo(hdc, 250, 50); + LineTo(hdc, 300, 100); + + hPen = CreatePen(PS_SOLID, 7, RGB(00, 0, 128)); + SelectObject(hdc, hPen); + + hBrush = CreateSolidBrush(RGB(192, 192, 192)); + SelectObject(hdc, hBrush); + + Ellipse(hdc, 75, 125, 125, 175); + Ellipse(hdc, 225, 125, 275, 175); + + hPen = CreatePen(PS_SOLID, 5, RGB(00, 1212, 00)); + SelectObject(hdc, hPen); + MoveToEx(hdc, 75, 525, 0); + LineTo(hdc, 75, 340); + + MoveToEx(hdc, 75, 510, 0); + LineTo(hdc, 115, 480); + + MoveToEx(hdc, 75, 500, 0); + LineTo(hdc, 25, 450); + + MoveToEx(hdc, 75, 475, 0); + LineTo(hdc, 125, 430); + + MoveToEx(hdc, 75, 460, 0); + LineTo(hdc, 25, 420); + + MoveToEx(hdc, 75, 440, 0); + LineTo(hdc, 125, 400); + + MoveToEx(hdc, 75, 410, 0); + LineTo(hdc, 25, 380); + + MoveToEx(hdc, 75, 400, 0); + LineTo(hdc, 100, 375); + + MoveToEx(hdc, 75, 375, 0); + LineTo(hdc, 40, 360); + + //снежное тело + hPen = CreatePen(PS_SOLID, 2, RGB(0, 0, 0)); + SelectObject(hdc, hPen); + hBrush = CreateSolidBrush(RGB(255, 255, 255)); + SelectObject(hdc, hBrush); + Ellipse(hdc, 450, 50, 500, 100); + Ellipse(hdc, 445, 95, 505, 155); + Ellipse(hdc, 440, 140, 510, 210); + //нос + hPen = CreatePen(PS_SOLID, 5, RGB(255, 165, 0)); + SelectObject(hdc, hPen); + MoveToEx(hdc, 475, 75, 0); + LineTo(hdc, 500, 80); + //руки и глаза + hPen = CreatePen(PS_SOLID, 5, RGB(0, 0, 0)); + SelectObject(hdc, hPen); + MoveToEx(hdc, 505, 110, 0); + LineTo(hdc, 550, 100); + MoveToEx(hdc, 450, 110, 0); + LineTo(hdc, 400, 80); + + MoveToEx(hdc, 465, 65, 0); + LineTo(hdc, 465, 65); + MoveToEx(hdc, 485, 65, 0); + LineTo(hdc, 485, 65); + + MoveToEx(hdc, 540, 100, 0); + Rectangle(hdc, 540, 100, 560, 150); + //буханка + hPen = CreatePen(PS_SOLID, 3, RGB(0, 0, 0)); + SelectObject(hdc, hPen); + hBrush = CreateSolidBrush(RGB(99, 99, 99)); + SelectObject(hdc, hBrush); + Rectangle(hdc, 600, 60, 800, 150); + + hPen = CreatePen(PS_SOLID, 3, RGB(51, 204, 255)); + SelectObject(hdc, hPen); + hBrush = CreateSolidBrush(RGB(192, 192, 192)); + SelectObject(hdc, hBrush); + Ellipse(hdc, 610, 140, 660, 190); + Ellipse(hdc, 740, 140, 790, 190); + + hPen = CreatePen(PS_SOLID, 3, RGB(0, 0, 0)); + SelectObject(hdc, hPen); + hBrush = CreateSolidBrush(RGB(255, 255, 255)); + SelectObject(hdc, hBrush); + Rectangle(hdc, 750, 70, 780, 110); + + //облако + hPen = CreatePen(PS_SOLID, 3, RGB(51, 204, 255)); + SelectObject(hdc, hPen); + hBrush = CreateSolidBrush(RGB(51, 204, 255)); + SelectObject(hdc, hBrush); + Ellipse(hdc, 850, 10, 890, 50); + Ellipse(hdc, 870, 0, 910, 40); + Ellipse(hdc, 890, 10, 930, 50); + Ellipse(hdc, 870, 20, 910, 60); + + //куст + hPen = CreatePen(PS_SOLID, 3, RGB(51, 255, 51)); + SelectObject(hdc, hPen); + { + int x1 = 700, y1 = 500; + int x2 = 600, y2 = 450; + int i = 0; + do { + MoveToEx(hdc, x1, y1, 0); + LineTo(hdc, x2, y2); + x2 += 15; + i++; + } while (i < 15); + } + + //куст 2 + { + int x1 = 850, y1 = 250; + int x2 = 950, y2 = 250; + do { + MoveToEx(hdc, x1, y1, 0); + LineTo(hdc, x2, y2); + x1 += 10; + y1 -= 20; + } while (x1 <= 950); + + x1 = 950; + y1 = 50; + do { + MoveToEx(hdc, x1, y1, 0); + LineTo(hdc, x2, y2); + x1 += 10; + y1 += 20; + } while (x1 <= 1050); + } + //забор снизу + hPen = CreatePen(PS_SOLID, 3, RGB(102, 51, 0)); + SelectObject(hdc, hPen); + { + int x1 = 150, y1 = 600; + int x2 = 150, y2 = 700; + do { + MoveToEx(hdc, x1, y1, 0); + LineTo(hdc, x2, y2); + x1 += 15; + x2 += 15; + } while (x1 <= 450); + } + //забор у дома + hPen = CreatePen(PS_SOLID, 3, RGB(102, 102, 0)); + SelectObject(hdc, hPen); + { + int x1 = 150, y1 = 450; + int x2 = 150, y2 = 550; + do { + MoveToEx(hdc, x1, y1, 0); + LineTo(hdc, x2, y2); + x1 += 15; + x2 += 15; + } while (x1 <= 450); + } + //лестница + hPen = CreatePen(PS_SOLID, 3, RGB(255, 0, 0)); + SelectObject(hdc, hPen); + { + int x1 = 900, y1 = 450; + int x2 = 1000, y2 = 450; + do { + MoveToEx(hdc, x1, y1, 0); + LineTo(hdc, x2, y2); + y1 += 15; + y2 += 15; + } while (y1 <= 600); + } + + EndPaint(hWnd, &ps); + } + break; + case WM_DESTROY: + PostQuitMessage(0); + break; + default: + return DefWindowProc(hWnd, message, wParam, lParam); + } + return 0; +} + +// Обработчик сообщений для окна "О программе". +INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) +{ + UNREFERENCED_PARAMETER(lParam); + switch (message) + { + case WM_INITDIALOG: + return (INT_PTR)TRUE; + + case WM_COMMAND: + if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) + { + EndDialog(hDlg, LOWORD(wParam)); + return (INT_PTR)TRUE; + } + break; + } + return (INT_PTR)FALSE; +} - printf("Ярмухин\n"); - printf("Дмитрий\n"); - printf("Алексеевич\n"); - printf("\n"); - printf("ИСЭбд-11-2024\n"); - printf("27.02.2006\n"); - printf("предмет: основы программирования\n"); - printf("!Лабороторная работа №1\n"); -} \ No newline at end of file