diff --git a/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill.sln b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill.sln new file mode 100644 index 0000000..63435b4 --- /dev/null +++ b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill.sln @@ -0,0 +1,41 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.33529.622 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Lab05.OAIP.ProkonovKirill", "Lab05.OAIP.ProkonovKirill\Lab05.OAIP.ProkonovKirill.vcxproj", "{B0357AC7-FE03-4428-8A6B-042A36D6FCBF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Lab06.OAIP.ProkonovKirill", "Lab06.OAIP.ProkonovKirill\Lab06.OAIP.ProkonovKirill.vcxproj", "{073C19EA-BCD4-4D50-98A5-D11E6B452607}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B0357AC7-FE03-4428-8A6B-042A36D6FCBF}.Debug|x64.ActiveCfg = Debug|x64 + {B0357AC7-FE03-4428-8A6B-042A36D6FCBF}.Debug|x64.Build.0 = Debug|x64 + {B0357AC7-FE03-4428-8A6B-042A36D6FCBF}.Debug|x86.ActiveCfg = Debug|Win32 + {B0357AC7-FE03-4428-8A6B-042A36D6FCBF}.Debug|x86.Build.0 = Debug|Win32 + {B0357AC7-FE03-4428-8A6B-042A36D6FCBF}.Release|x64.ActiveCfg = Release|x64 + {B0357AC7-FE03-4428-8A6B-042A36D6FCBF}.Release|x64.Build.0 = Release|x64 + {B0357AC7-FE03-4428-8A6B-042A36D6FCBF}.Release|x86.ActiveCfg = Release|Win32 + {B0357AC7-FE03-4428-8A6B-042A36D6FCBF}.Release|x86.Build.0 = Release|Win32 + {073C19EA-BCD4-4D50-98A5-D11E6B452607}.Debug|x64.ActiveCfg = Debug|x64 + {073C19EA-BCD4-4D50-98A5-D11E6B452607}.Debug|x64.Build.0 = Debug|x64 + {073C19EA-BCD4-4D50-98A5-D11E6B452607}.Debug|x86.ActiveCfg = Debug|Win32 + {073C19EA-BCD4-4D50-98A5-D11E6B452607}.Debug|x86.Build.0 = Debug|Win32 + {073C19EA-BCD4-4D50-98A5-D11E6B452607}.Release|x64.ActiveCfg = Release|x64 + {073C19EA-BCD4-4D50-98A5-D11E6B452607}.Release|x64.Build.0 = Release|x64 + {073C19EA-BCD4-4D50-98A5-D11E6B452607}.Release|x86.ActiveCfg = Release|Win32 + {073C19EA-BCD4-4D50-98A5-D11E6B452607}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {776EC82A-419E-4F52-9D0E-C06E4E227946} + EndGlobalSection +EndGlobal diff --git a/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill.cpp b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill.cpp new file mode 100644 index 0000000..0bf943c --- /dev/null +++ b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill.cpp @@ -0,0 +1,346 @@ +// Lab05.OAIP.ProkonovKirill.cpp : Определяет точку входа для приложения. +// + +#include "framework.h" +#include "Lab05.OAIP.ProkonovKirill.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_LAB05OAIPPROKONOVKIRILL, szWindowClass, MAX_LOADSTRING); + MyRegisterClass(hInstance); + + // Выполнить инициализацию приложения: + if (!InitInstance (hInstance, nCmdShow)) + { + return FALSE; + } + + HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_LAB05OAIPPROKONOVKIRILL)); + + 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_LAB05OAIPPROKONOVKIRILL)); + wcex.hCursor = LoadCursor(nullptr, IDC_ARROW); + wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); + wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_LAB05OAIPPROKONOVKIRILL); + 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, hPen2, hPen3, hPen4, hPen5, hPen6, hPen7, hPen8; + hPen = CreatePen(PS_SOLID, 3, RGB(150, 75, 0)); + hPen2 = CreatePen(PS_SOLID, 2, RGB(0, 0, 0)); + hPen3 = CreatePen(PS_SOLID, 3, RGB(66, 170, 255)); + hPen4 = CreatePen(PS_SOLID, 3, RGB(255, 0, 0)); + hPen5 = CreatePen(PS_SOLID, 2, RGB(0, 128, 0)); + hPen6 = CreatePen(PS_SOLID, 4, RGB(150, 75, 0)); + hPen7 = CreatePen(PS_SOLID, 4, RGB(0, 128, 0)); + hPen8 = CreatePen(PS_SOLID, 4, RGB(0, 128, 0)); + SelectObject(hdc, hPen); + MoveToEx(hdc, 150, 350, NULL); + LineTo(hdc, 275, 250); + LineTo(hdc, 400, 350); + DeleteObject(hPen); + // Дом + SelectObject(hdc, hPen2); + LineTo(hdc, 400, 525); + LineTo(hdc, 150, 525); + LineTo(hdc, 150, 350); + LineTo(hdc, 400, 350); + // Окно + SelectObject(hdc, hPen3); + 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); + + + //Ёлка + SelectObject(hdc, hPen5); + MoveToEx(hdc, 100, 250, NULL); + LineTo(hdc, 50, 300); + LineTo(hdc, 150, 300); + LineTo(hdc, 100, 250); + MoveToEx(hdc, 100, 300, NULL); + LineTo(hdc, 50, 350); + LineTo(hdc, 150, 350); + LineTo(hdc, 100, 300); + MoveToEx(hdc, 100, 350, NULL); + LineTo(hdc, 50, 400); + LineTo(hdc, 150, 400); + LineTo(hdc, 100, 350); + MoveToEx(hdc, 100, 400, NULL); + LineTo(hdc, 50, 450); + LineTo(hdc, 150, 450); + LineTo(hdc, 100, 400); + SelectObject(hdc, hPen5); + MoveToEx(hdc, 90, 450, NULL); + LineTo(hdc, 90, 475); + LineTo(hdc, 105, 475); + LineTo(hdc, 105, 450); + SelectObject(hdc, hPen6); + MoveToEx(hdc, 90, 450, NULL); + LineTo(hdc, 90, 475); + LineTo(hdc, 105, 475); + LineTo(hdc, 105, 450); + MoveToEx(hdc, 50, 475, NULL); + LineTo(hdc, 150, 475); + + //Машина + MoveToEx(hdc, 800, 525, NULL); + LineTo(hdc, 1000, 525); + LineTo(hdc, 950, 600); + /*RECT vehicle = {700, 600, 1100, 700};*/ + HBRUSH hBrushGray = CreateSolidBrush(RGB(110, 110, 110)); + SelectObject(hdc, hBrushGray); + Rectangle(hdc, 700, 600, 1100, 700); + SelectObject(hdc, hPen3); + LineTo(hdc, 950, 700); + MoveToEx(hdc, 800, 525, NULL); + SelectObject(hdc, hPen3); + LineTo(hdc, 750, 600); + SelectObject(hdc, hPen6); + HBRUSH hBrushWheels; + hBrushWheels = CreateSolidBrush(RGB(0, 0, 0)); + SelectObject(hdc, hBrushWheels); + SelectObject(hdc, hPen6); + Ellipse(hdc, 985, 650, 1085, 750); + Ellipse(hdc, 750, 650, 850, 750); + //FillRect(hdc, &vehicle, hBrush, hPen6); + + //Солнце + /*RECT r; + r.left = 1200; + r.top = 80; + r.right = 1300; + r.right = 1300; + FillRect(hdc, &r, (HBRUSH)CreateSolidBrush(RGB(255, 255, 0)));*/ + + RECT Sunlight = { 1200, 80, 1300, 180 }; + FillRect(hdc, &Sunlight, (HBRUSH)CreateSolidBrush(RGB(255, 255, 0))); + + HBRUSH hBrushBrown = CreateSolidBrush(RGB(100, 80, 0)); + + //Мост. + MoveToEx(hdc, 955, 100, NULL); + LineTo(hdc, 550, 100); + LineTo(hdc, 580, 0); + LineTo(hdc, 600, 100); + LineTo(hdc, 620, 0); + LineTo(hdc, 640, 100); + LineTo(hdc, 660, 0); + LineTo(hdc, 680, 100); + LineTo(hdc, 700, 0); + LineTo(hdc, 720, 100); + LineTo(hdc, 740, 0); + LineTo(hdc, 760, 100); + LineTo(hdc, 780, 0); + LineTo(hdc, 800, 100); + LineTo(hdc, 820, 0); + LineTo(hdc, 840, 100); + LineTo(hdc, 860, 0); + LineTo(hdc, 880, 100); + LineTo(hdc, 900, 0); + LineTo(hdc, 920, 100); + LineTo(hdc, 940, 0); + LineTo(hdc, 955, 100); + + // Опоры моста + MoveToEx(hdc, 955, 100, NULL); + LineTo(hdc, 955, 200); + LineTo(hdc, 935, 200); + LineTo(hdc, 935, 100); + MoveToEx(hdc, 550, 100, NULL); + LineTo(hdc, 550, 200); + LineTo(hdc, 570, 200); + LineTo(hdc, 570, 100); + MoveToEx(hdc, 580, 0, NULL); + LineTo(hdc, 940, 0); + + + + //Медведь + SelectObject(hdc, hBrushBrown); + SelectObject(hdc, hPen6); + Ellipse(hdc, 63, 125, 90, 150); + Ellipse(hdc, 15, 125, 40, 150); + SelectObject(hdc, hPen); + Ellipse(hdc, 20, 140, 80, 200); + SelectObject(hdc, hPen); + Ellipse(hdc, 30, 180, 70, 195); + SelectObject(hdc, hPen); + Ellipse(hdc, 30, 158, 45, 170); + Ellipse(hdc, 55, 158, 65, 170); + SelectObject(hdc, hPen); + Ellipse(hdc, 30, 200, 70, 263); + SelectObject(hdc, hPen); + MoveToEx(hdc, 50, 165, NULL); + LineTo(hdc, 50, 175); + MoveToEx(hdc, 0, 220, NULL); + LineTo(hdc, 30, 230); + MoveToEx(hdc, 70, 230, NULL); + LineTo(hdc, 100, 220); + MoveToEx(hdc, 40, 175, NULL); + LineTo(hdc, 60, 175); + + + + // TODO: Добавьте сюда любой код прорисовки, использующий HDC... + 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; +} diff --git a/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill.h b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill.h new file mode 100644 index 0000000..d00d47e --- /dev/null +++ b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill.h @@ -0,0 +1,3 @@ +#pragma once + +#include "resource.h" diff --git a/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill.ico b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill.ico new file mode 100644 index 0000000..b3ec03b Binary files /dev/null and b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill.ico differ diff --git a/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill.rc b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill.rc new file mode 100644 index 0000000..52076f6 Binary files /dev/null and b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill.rc differ diff --git a/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill.vcxproj b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill.vcxproj new file mode 100644 index 0000000..dcd9e47 --- /dev/null +++ b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill.vcxproj @@ -0,0 +1,160 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {b0357ac7-fe03-4428-8a6b-042a36d6fcbf} + Lab05OAIPProkonovKirill + 10.0 + + + + Application + true + v142 + Unicode + + + Application + false + v142 + true + Unicode + + + Application + true + v142 + Unicode + + + Application + false + v142 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + false + + + true + + + false + + + + Level3 + true + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + + + + + Level3 + true + _DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + true + true + true + NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill.vcxproj.filters b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill.vcxproj.filters new file mode 100644 index 0000000..782bdbd --- /dev/null +++ b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill.vcxproj.filters @@ -0,0 +1,49 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + + + Исходные файлы + + + + + Файлы ресурсов + + + + + Файлы ресурсов + + + Файлы ресурсов + + + \ No newline at end of file diff --git a/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/Resource.h b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/Resource.h new file mode 100644 index 0000000..7451631 --- /dev/null +++ b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/Resource.h @@ -0,0 +1,30 @@ +//{{NO_DEPENDENCIES}} +// Включаемый файл, созданный в Microsoft Visual C++. +// Используется Lab05.OAIP.ProkonovKirill.rc + +#define IDS_APP_TITLE 103 + +#define IDR_MAINFRAME 128 +#define IDD_LAB05OAIPPROKONOVKIRILL_DIALOG 102 +#define IDD_ABOUTBOX 103 +#define IDM_ABOUT 104 +#define IDM_EXIT 105 +#define IDI_LAB05OAIPPROKONOVKIRILL 107 +#define IDI_SMALL 108 +#define IDC_LAB05OAIPPROKONOVKIRILL 109 +#define IDC_MYICON 2 +#ifndef IDC_STATIC +#define IDC_STATIC -1 +#endif +// Следующие стандартные значения для новых объектов +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS + +#define _APS_NO_MFC 130 +#define _APS_NEXT_RESOURCE_VALUE 129 +#define _APS_NEXT_COMMAND_VALUE 32771 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 110 +#endif +#endif diff --git a/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/framework.h b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/framework.h new file mode 100644 index 0000000..a8f6dc8 --- /dev/null +++ b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/framework.h @@ -0,0 +1,15 @@ +// header.h: включаемый файл для стандартных системных включаемых файлов +// или включаемые файлы для конкретного проекта +// + +#pragma once + +#include "targetver.h" +#define WIN32_LEAN_AND_MEAN // Исключите редко используемые компоненты из заголовков Windows +// Файлы заголовков Windows +#include +// Файлы заголовков среды выполнения C +#include +#include +#include +#include diff --git a/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/small.ico b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/small.ico new file mode 100644 index 0000000..b3ec03b Binary files /dev/null and b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/small.ico differ diff --git a/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/targetver.h b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/targetver.h new file mode 100644 index 0000000..d90003d --- /dev/null +++ b/Lab05.OAIP.ProkonovKirill/Lab05.OAIP.ProkonovKirill/targetver.h @@ -0,0 +1,6 @@ +#pragma once + +// // При включении SDKDDKVer.h будет задана самая новая из доступных платформ Windows. +// Если вы планируете сборку приложения для предыдущей версии платформы Windows, включите WinSDKVer.h и +// задайте желаемую платформу в макросе _WIN32_WINNT, прежде чем включать SDKDDKVer.h. +#include diff --git a/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill.cpp b/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill.cpp new file mode 100644 index 0000000..b88cfd9 --- /dev/null +++ b/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill.cpp @@ -0,0 +1,270 @@ +// Lab06.OAIP.ProkonovKirill.cpp : Определяет точку входа для приложения. +// + +#include "framework.h" +#include "Lab06.OAIP.ProkonovKirill.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_LAB06OAIPPROKONOVKIRILL, szWindowClass, MAX_LOADSTRING); + MyRegisterClass(hInstance); + + // Выполнить инициализацию приложения: + if (!InitInstance (hInstance, nCmdShow)) + { + return FALSE; + } + + HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_LAB06OAIPPROKONOVKIRILL)); + + 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_LAB06OAIPPROKONOVKIRILL)); + wcex.hCursor = LoadCursor(nullptr, IDC_ARROW); + wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); + wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_LAB06OAIPPROKONOVKIRILL); + 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); + // TODO: Добавьте сюда любой код прорисовки, использующий HDC... + + HPEN hPen, hPen2, hPen3, hPen4, hPen5, hPen6, hPen7, hPen8; + hPen = CreatePen(PS_SOLID, 3, RGB(150, 75, 0)); + hPen2 = CreatePen(PS_SOLID, 2, RGB(0, 0, 0)); + hPen3 = CreatePen(PS_SOLID, 3, RGB(66, 170, 255)); + hPen4 = CreatePen(PS_SOLID, 3, RGB(255, 0, 0)); + hPen5 = CreatePen(PS_SOLID, 2, RGB(0, 128, 0)); + hPen6 = CreatePen(PS_SOLID, 4, RGB(150, 75, 0)); + hPen7 = CreatePen(PS_SOLID, 4, RGB(0, 128, 0)); + hPen8 = CreatePen(PS_SOLID, 4, RGB(0, 128, 0)); + SelectObject(hdc, hPen); + MoveToEx(hdc, 150, 350, NULL); + LineTo(hdc, 275, 250); + LineTo(hdc, 400, 350); + DeleteObject(hPen); + // Дом + SelectObject(hdc, hPen2); + LineTo(hdc, 400, 525); + LineTo(hdc, 150, 525); + LineTo(hdc, 150, 350); + LineTo(hdc, 400, 350); + // Окно + SelectObject(hdc, hPen3); + 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); + + + //Забор + int x1 = 405, y1 = 480; + int x2 = 405, y2 = 500; + do { + HPEN + hPen = CreatePen(PS_SOLID, 4, RGB(14, 59, 14)); + SelectObject(hdc, hPen); + MoveToEx(hdc, x1, y1, NULL); + LineTo(hdc, x2, y2); + x1 = x1 + 15; + x2 = x2 + 15; + } while (x1 <= 900); + + //большой забор + int x5 = 450, y5 = 375; + int x6 = 450, y6 = 475; + int i = 0; + do { + HPEN + hPen = CreatePen(PS_SOLID, 4, RGB(14, 59, 14)); + SelectObject(hdc, hPen); + MoveToEx(hdc, x5, y5, NULL); + LineTo(hdc, x6, y6); + x5 = x5 + 25; + x6 = x6 + 25; + i++; + } while (i < 16); + + //Растение1 + int Flower_x1 = 600, Flower_y1 = 400; + int Flower_x2 = 700, Flower_y2 = 475; + do + { + HPEN + hPen8 = CreatePen(PS_SOLID, 4, RGB(0, 128, 0)); + SelectObject(hdc, hPen8); + MoveToEx(hdc, Flower_x1, Flower_y1, NULL); + LineTo(hdc, Flower_x2, Flower_y2); + Flower_x1 += 25; + } while (Flower_x1 <= 800); + + //Растение2 + int Flower2_x1 = 0, Flower2_y1 = 250; + int Flower2_x2 = 100, Flower2_y2 = 250; + do + { + HPEN + hPen8 = CreatePen(PS_SOLID, 4, RGB(0, 128, 0)); + SelectObject(hdc, hPen8); + MoveToEx(hdc, Flower2_x1, Flower2_y1, NULL); + LineTo(hdc, Flower2_x2, Flower2_y2); + Flower2_x1 += 25; + Flower2_y1 -= 50; + } while (Flower2_x1 <= 100); + + //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; +} diff --git a/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill.h b/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill.h new file mode 100644 index 0000000..d00d47e --- /dev/null +++ b/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill.h @@ -0,0 +1,3 @@ +#pragma once + +#include "resource.h" diff --git a/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill.ico b/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill.ico new file mode 100644 index 0000000..b3ec03b Binary files /dev/null and b/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill.ico differ diff --git a/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill.rc b/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill.rc new file mode 100644 index 0000000..2fe5630 Binary files /dev/null and b/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill.rc differ diff --git a/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill.vcxproj b/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill.vcxproj new file mode 100644 index 0000000..09200ae --- /dev/null +++ b/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill.vcxproj @@ -0,0 +1,160 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {073c19ea-bcd4-4d50-98a5-d11e6b452607} + Lab06OAIPProkonovKirill + 10.0 + + + + Application + true + v142 + Unicode + + + Application + false + v142 + true + Unicode + + + Application + true + v142 + Unicode + + + Application + false + v142 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + false + + + true + + + false + + + + Level3 + true + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + + + + + Level3 + true + _DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + true + true + true + NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill.vcxproj.filters b/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill.vcxproj.filters new file mode 100644 index 0000000..4f761df --- /dev/null +++ b/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill.vcxproj.filters @@ -0,0 +1,49 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + + + Исходные файлы + + + + + Файлы ресурсов + + + + + Файлы ресурсов + + + Файлы ресурсов + + + \ No newline at end of file diff --git a/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/Resource.h b/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/Resource.h new file mode 100644 index 0000000..5fc3c79 --- /dev/null +++ b/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/Resource.h @@ -0,0 +1,30 @@ +//{{NO_DEPENDENCIES}} +// Включаемый файл, созданный в Microsoft Visual C++. +// Используется Lab06.OAIP.ProkonovKirill.rc + +#define IDS_APP_TITLE 103 + +#define IDR_MAINFRAME 128 +#define IDD_LAB06OAIPPROKONOVKIRILL_DIALOG 102 +#define IDD_ABOUTBOX 103 +#define IDM_ABOUT 104 +#define IDM_EXIT 105 +#define IDI_LAB06OAIPPROKONOVKIRILL 107 +#define IDI_SMALL 108 +#define IDC_LAB06OAIPPROKONOVKIRILL 109 +#define IDC_MYICON 2 +#ifndef IDC_STATIC +#define IDC_STATIC -1 +#endif +// Следующие стандартные значения для новых объектов +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS + +#define _APS_NO_MFC 130 +#define _APS_NEXT_RESOURCE_VALUE 129 +#define _APS_NEXT_COMMAND_VALUE 32771 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 110 +#endif +#endif diff --git a/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/framework.h b/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/framework.h new file mode 100644 index 0000000..a8f6dc8 --- /dev/null +++ b/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/framework.h @@ -0,0 +1,15 @@ +// header.h: включаемый файл для стандартных системных включаемых файлов +// или включаемые файлы для конкретного проекта +// + +#pragma once + +#include "targetver.h" +#define WIN32_LEAN_AND_MEAN // Исключите редко используемые компоненты из заголовков Windows +// Файлы заголовков Windows +#include +// Файлы заголовков среды выполнения C +#include +#include +#include +#include diff --git a/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/small.ico b/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/small.ico new file mode 100644 index 0000000..b3ec03b Binary files /dev/null and b/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/small.ico differ diff --git a/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/targetver.h b/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/targetver.h new file mode 100644 index 0000000..d90003d --- /dev/null +++ b/Lab05.OAIP.ProkonovKirill/Lab06.OAIP.ProkonovKirill/targetver.h @@ -0,0 +1,6 @@ +#pragma once + +// // При включении SDKDDKVer.h будет задана самая новая из доступных платформ Windows. +// Если вы планируете сборку приложения для предыдущей версии платформы Windows, включите WinSDKVer.h и +// задайте желаемую платформу в макросе _WIN32_WINNT, прежде чем включать SDKDDKVer.h. +#include