diff --git a/Lab18/Lab18.sln b/Lab18/Lab18.sln
new file mode 100644
index 0000000..be9e57d
--- /dev/null
+++ b/Lab18/Lab18.sln
@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.11.35312.102
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Lab18", "Lab18\Lab18.vcxproj", "{D9C59F4A-33A5-4372-8272-A2662AFA43FC}"
+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
+ {D9C59F4A-33A5-4372-8272-A2662AFA43FC}.Debug|x64.ActiveCfg = Debug|x64
+ {D9C59F4A-33A5-4372-8272-A2662AFA43FC}.Debug|x64.Build.0 = Debug|x64
+ {D9C59F4A-33A5-4372-8272-A2662AFA43FC}.Debug|x86.ActiveCfg = Debug|Win32
+ {D9C59F4A-33A5-4372-8272-A2662AFA43FC}.Debug|x86.Build.0 = Debug|Win32
+ {D9C59F4A-33A5-4372-8272-A2662AFA43FC}.Release|x64.ActiveCfg = Release|x64
+ {D9C59F4A-33A5-4372-8272-A2662AFA43FC}.Release|x64.Build.0 = Release|x64
+ {D9C59F4A-33A5-4372-8272-A2662AFA43FC}.Release|x86.ActiveCfg = Release|Win32
+ {D9C59F4A-33A5-4372-8272-A2662AFA43FC}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {734EA0A8-6C5E-4C21-B061-78221751E7EC}
+ EndGlobalSection
+EndGlobal
diff --git a/Lab18/Lab18/Lab18.cpp b/Lab18/Lab18/Lab18.cpp
new file mode 100644
index 0000000..15633b4
--- /dev/null
+++ b/Lab18/Lab18/Lab18.cpp
@@ -0,0 +1,497 @@
+// Lab18.cpp : Определяет точку входа для приложения.
+//
+
+#include "framework.h"
+#include "Lab18.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_LAB18, szWindowClass, MAX_LOADSTRING);
+ MyRegisterClass(hInstance);
+
+ // Выполнить инициализацию приложения:
+ if (!InitInstance (hInstance, nCmdShow))
+ {
+ return FALSE;
+ }
+
+ HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_LAB18));
+
+ 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_LAB18));
+ wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
+ wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
+ wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_LAB18);
+ 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;
+}
+
+void Triangle(HDC hdc, int cx, int cy, int size) {
+ HPEN hPen;
+ hPen = CreatePen(PS_SOLID, 2, RGB(0, 0, 255));
+ SelectObject(hdc, hPen);
+
+ MoveToEx(hdc, cx, cy - size, NULL);
+ LineTo(hdc, cx + size, cy + size);
+ LineTo(hdc, cx - size, cy + size);
+ LineTo(hdc, cx, cy - size);
+
+ DeleteObject(hPen);
+}
+void Triangle2(HDC hdc, int cx, int cy, int size) {
+ HPEN hPen;
+ hPen = CreatePen(PS_SOLID, 2, RGB(0, 0, 255));
+ SelectObject(hdc, hPen);
+
+ int x1 = cx - size / 2;
+ int y1 = cy - size;
+ int x2 = cx + size / 2;
+ int y2 = cy - size;
+ int x3 = cx - size;
+ int y3 = cy + size;
+ int x4 = cx + size;
+ int y4 = cy + size;
+
+ MoveToEx(hdc, x1, y1, NULL);
+ LineTo(hdc, x2, y2);
+ LineTo(hdc, x3, y3);
+ LineTo(hdc, x4, y4);
+ LineTo(hdc, x1, y1);
+ DeleteObject(hPen);
+}
+void Romb(HDC hdc, int cx, int cy, int size) {
+ HPEN hPen;
+ hPen = CreatePen(PS_SOLID, 2, RGB(0, 0, 255));
+ SelectObject(hdc, hPen);
+
+ int x1 = cx ;
+ int y1 = cy - size;
+ int x2 = cx + size;
+ int y2 = cy;
+ int x3 = cx ;
+ int y3 = cy + size;
+ int x4 = cx - size;
+ int y4 = cy ;
+
+ MoveToEx(hdc, x1, y1, NULL);
+ LineTo(hdc, x2, y2);
+ LineTo(hdc, x3, y3);
+ LineTo(hdc, x4, y4);
+ LineTo(hdc, x1, y1);
+ DeleteObject(hPen);
+}
+void Star(HDC hdc, int cx, int cy, int size) {
+ HPEN hPen;
+ hPen = CreatePen(PS_SOLID, 2, RGB(0, 0, 255));
+ SelectObject(hdc, hPen);
+
+ int x1 = cx;
+ int y1 = cy - size;
+ int x2 = cx + size/4;
+ int y2 = cy-size / 4;
+ int x3 = cx + size;
+ int y3 = cy;
+ int x4 = cx + size/4;
+ int y4 = cy+ size/4;
+ int x5 = cx;
+ int y5 = cy + size;
+ int x6 = cx - size / 4;
+ int y6 = cy + size / 4;
+ int x7 = cx - size;
+ int y7 = cy;
+ int x8 = cx - size / 4;
+ int y8 = cy - size / 4;
+
+ MoveToEx(hdc, x1, y1, NULL);
+ LineTo(hdc, x2, y2);
+ LineTo(hdc, x3, y3);
+ LineTo(hdc, x4, y4);
+ LineTo(hdc, x5, y5);
+ LineTo(hdc, x6, y6);
+ LineTo(hdc, x7, y7);
+ LineTo(hdc, x8, y8);
+ LineTo(hdc, x1, y1);
+ DeleteObject(hPen);
+}
+void uh(HDC hdc, int cx, int cy, int LongSize) {
+ HPEN hPen;
+ hPen = CreatePen(PS_SOLID, 2, RGB(0, 0, 255));
+ SelectObject(hdc, hPen);
+
+ int x1 = cx- LongSize / 2;
+ int y1 = cy - LongSize / 2;
+ int x2 = cx + LongSize;
+ int y2 = cy - LongSize / 2;
+ int x3 = cx + LongSize / 2;
+ int y3 = cy + LongSize / 2;
+ int x4 = cx -LongSize;
+ int y4 = cy + LongSize / 2;
+
+ MoveToEx(hdc, x1, y1, NULL);
+ LineTo(hdc, x2, y2);
+ LineTo(hdc, x3, y3);
+ LineTo(hdc, x4, y4);
+ LineTo(hdc, x1, y1);
+ DeleteObject(hPen);
+}
+
+
+
+
+
+//
+// ФУНКЦИЯ: WndProc(HWND, UINT, WPARAM, LPARAM)
+//
+// ЦЕЛЬ: Обрабатывает сообщения в главном окне.
+//
+// WM_COMMAND - обработать меню приложения
+// WM_PAINT - Отрисовка главного окна
+// WM_DESTROY - отправить сообщение о выходе и вернуться
+//
+//
+
+
+void task1_1(HDC hdc, int cx, int cy, int size) {
+ Triangle(hdc, cx, cy, size);
+ if (size < 5) {
+ return;
+ }
+ task1_1(hdc, cx - size, cy - size, size / 2);
+ task1_1(hdc, cx + size, cy-size, size / 2);
+}
+void task1_2(HDC hdc, int cx, int cy, int size) {
+ Triangle(hdc, cx, cy, size);
+ if (size < 5) {
+ return;
+ }
+ task1_2(hdc, cx - size, cy - size, size / 2);
+ task1_2(hdc, cx, cy + size, size / 2);
+}
+void task1_3(HDC hdc, int cx, int cy, int size) {
+ Triangle(hdc, cx, cy, size);
+ if (size < 5) {
+ return;
+ }
+ task1_3(hdc, cx - size, cy - size, size / 2);
+ task1_3(hdc, cx, cy + size, size / 2);
+ task1_3(hdc, cx + size, cy - size, size / 2);
+}
+void task2_1(HDC hdc, int cx, int cy, int size) {
+ Triangle2(hdc, cx, cy, size);
+ if (size < 5) {
+ return;
+ }
+ task2_1(hdc, cx - size, cy - size, size / 2);
+}
+
+void task2_2(HDC hdc, int cx, int cy, int size) {
+ Triangle2(hdc, cx, cy, size);
+ if (size < 5) {
+ return;
+ }
+ task2_2(hdc, cx - size, cy - size, size / 2);
+ task2_2(hdc, cx + size, cy - size, size / 2);
+}
+void task2_3(HDC hdc, int cx, int cy, int size) {
+ Triangle2(hdc, cx, cy, size);
+ if (size < 5) {
+ return;
+ }
+ task2_3(hdc, cx - size, cy - size, size / 3);
+ task2_3(hdc, cx + size, cy - size, size / 3);
+ task2_3(hdc, cx + size, cy + size, size / 2);
+ task2_3(hdc, cx - size, cy + size, size / 2);
+}
+void task3_1(HDC hdc, int cx, int cy, int size) {
+ Romb(hdc, cx, cy, size);
+ if (size < 5) {
+ return;
+ }
+ task3_1(hdc, cx + size, cy , size / 2);
+ task3_1(hdc, cx - size, cy , size / 2);
+}
+void task3_2(HDC hdc, int cx, int cy, int size) {
+ Romb(hdc, cx, cy, size);
+ if (size < 5) {
+ return;
+ }
+ task3_2(hdc, cx + size, cy, size / 2);
+ task3_2(hdc, cx - size, cy, size / 2);
+ task3_2(hdc, cx, cy+size, size / 2);
+}
+void task3_3(HDC hdc, int cx, int cy, int size) {
+ Romb(hdc, cx, cy, size);
+ if (size < 5) {
+ return;
+ }
+ task3_3(hdc, cx + size, cy, size / 2);
+ task3_3(hdc, cx - size, cy, size / 2);
+ task3_3(hdc, cx, cy - size, size / 2);
+}
+void task3_4(HDC hdc, int cx, int cy, int size) {
+ Romb(hdc, cx, cy, size);
+ if (size < 5) {
+ return;
+ }
+ task3_4(hdc, cx + size, cy, size / 2);
+ task3_4(hdc, cx - size, cy, size / 2);
+ task3_4(hdc, cx, cy - size, size / 2);
+ task3_4(hdc, cx, cy + size, size / 2);
+}
+void task4_1(HDC hdc, int cx, int cy, int size) {
+ Star(hdc, cx, cy, size);
+ if (size < 5) {
+ return;
+ }
+ task4_1(hdc, cx + size, cy, size / 2);
+ task4_1(hdc, cx - size, cy, size / 2);
+}
+void task4_2(HDC hdc, int cx, int cy, int size) {
+ Star(hdc, cx, cy, size);
+ if (size < 5) {
+ return;
+ }
+ task4_2(hdc, cx, cy+size, size / 2);
+ task4_2(hdc, cx , cy-size, size / 2);
+}
+void task4_3(HDC hdc, int cx, int cy, int size) {
+ Star(hdc, cx, cy, size);
+ if (size < 5) {
+ return;
+ }
+ task4_3(hdc, cx, cy + size, size / 2);
+ task4_3(hdc, cx, cy - size, size / 2);
+ task4_3(hdc, cx-size, cy, size / 2);
+}
+void task5_3(HDC hdc, int cx, int cy, int size) {
+ uh(hdc, cx, cy, size);
+ if (size < 80) {
+ return;
+ }
+ task5_3(hdc, cx + size, cy + size, size / 2);
+
+ task5_3(hdc, cx + size, cy - size, size / 2);
+ task5_3(hdc, cx - size, cy - size, size / 2);
+ task5_3(hdc, cx - size, cy + size, size / 2);
+}
+
+
+
+
+
+
+
+
+enum Modes {
+ image1_1,
+ image1_2,
+ image1_3,
+ image2_1,
+ image2_2,
+ image2_3,
+ image3_1,
+ image3_2,
+ image3_3,
+ image3_4,
+ image4_1,
+ image4_2,
+ image4_3,
+ taskDop,
+
+ mode_none
+};
+enum Modes mode = image1_1;
+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 = CreatePen(PS_SOLID, 2, RGB(0, 0, 255));
+ SelectObject(hdc, hPen);
+ switch (mode) {
+ case image1_1:
+ task1_1(hdc, 200, 200, 100);
+ break;
+ case image1_2:
+ task1_2(hdc, 200, 200, 100);
+ break;
+ case image1_3:
+ task1_3(hdc, 200, 200, 100);
+ break;
+ case image2_1:
+ task2_1(hdc, 200, 200, 100);
+ break;
+ case image2_2:
+ task2_2(hdc, 200, 200, 100);
+ break;
+ case image2_3:
+ task2_3(hdc, 200, 200, 100);
+ break;
+ case image3_1:
+ task3_1(hdc, 200, 200, 100);
+ break;
+ case image3_2:
+ task3_2(hdc, 200, 200, 100);
+ break;
+ case image3_3:
+ task3_3(hdc, 200, 200, 100);
+ break;
+ case image3_4:
+ task3_4(hdc, 200, 200, 100);
+ break;
+ case image4_1:
+ task4_1(hdc, 200, 200, 100);
+ break;
+ case image4_2:
+ task4_2(hdc, 200, 200, 100);
+ break;
+ case image4_3:
+ task4_3(hdc, 200, 200, 100);
+ break;
+ case taskDop:
+ task5_3(hdc, 200, 200, 100);
+ break;
+ }
+ // TODO: Добавьте сюда любой код прорисовки, использующий HDC...
+ EndPaint(hWnd, &ps);
+ }
+ break;
+ case WM_KEYDOWN:
+ mode = (enum Modes)(mode + 1); // переключение на следующий режим
+ if (mode == mode_none) mode = image1_1; // если режимы закончились - начинаем заново
+ InvalidateRect(hWnd, NULL, TRUE);
+ 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/Lab18/Lab18/Lab18.h b/Lab18/Lab18/Lab18.h
new file mode 100644
index 0000000..d00d47e
--- /dev/null
+++ b/Lab18/Lab18/Lab18.h
@@ -0,0 +1,3 @@
+#pragma once
+
+#include "resource.h"
diff --git a/Lab18/Lab18/Lab18.ico b/Lab18/Lab18/Lab18.ico
new file mode 100644
index 0000000..b3ec03b
Binary files /dev/null and b/Lab18/Lab18/Lab18.ico differ
diff --git a/Lab18/Lab18/Lab18.rc b/Lab18/Lab18/Lab18.rc
new file mode 100644
index 0000000..871e906
Binary files /dev/null and b/Lab18/Lab18/Lab18.rc differ
diff --git a/Lab18/Lab18/Lab18.vcxproj b/Lab18/Lab18/Lab18.vcxproj
new file mode 100644
index 0000000..88a7fe9
--- /dev/null
+++ b/Lab18/Lab18/Lab18.vcxproj
@@ -0,0 +1,148 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ 17.0
+ Win32Proj
+ {d9c59f4a-33a5-4372-8272-a2662afa43fc}
+ Lab18
+ 10.0
+
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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/Lab18/Lab18/Lab18.vcxproj.filters b/Lab18/Lab18/Lab18.vcxproj.filters
new file mode 100644
index 0000000..cd3fe4d
--- /dev/null
+++ b/Lab18/Lab18/Lab18.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/Lab18/Lab18/Resource.h b/Lab18/Lab18/Resource.h
new file mode 100644
index 0000000..4034f8c
--- /dev/null
+++ b/Lab18/Lab18/Resource.h
@@ -0,0 +1,30 @@
+//{{NO_DEPENDENCIES}}
+// Включаемый файл, созданный в Microsoft Visual C++.
+// Используется Lab18.rc
+
+#define IDS_APP_TITLE 103
+
+#define IDR_MAINFRAME 128
+#define IDD_LAB18_DIALOG 102
+#define IDD_ABOUTBOX 103
+#define IDM_ABOUT 104
+#define IDM_EXIT 105
+#define IDI_LAB18 107
+#define IDI_SMALL 108
+#define IDC_LAB18 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/Lab18/Lab18/framework.h b/Lab18/Lab18/framework.h
new file mode 100644
index 0000000..a8f6dc8
--- /dev/null
+++ b/Lab18/Lab18/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/Lab18/Lab18/small.ico b/Lab18/Lab18/small.ico
new file mode 100644
index 0000000..b3ec03b
Binary files /dev/null and b/Lab18/Lab18/small.ico differ
diff --git a/Lab18/Lab18/targetver.h b/Lab18/Lab18/targetver.h
new file mode 100644
index 0000000..d90003d
--- /dev/null
+++ b/Lab18/Lab18/targetver.h
@@ -0,0 +1,6 @@
+#pragma once
+
+// // При включении SDKDDKVer.h будет задана самая новая из доступных платформ Windows.
+// Если вы планируете сборку приложения для предыдущей версии платформы Windows, включите WinSDKVer.h и
+// задайте желаемую платформу в макросе _WIN32_WINNT, прежде чем включать SDKDDKVer.h.
+#include