Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // WindowsProject1.cpp : Определяет точку входа для приложения.
- //
- #include "stdafx.h"
- #include "WindowsProject3.h"
- #define MAX_LOADSTRING 100
- bool X = TRUE;
- // Глобальные переменные:
- 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_WINDOWSPROJECT3, szWindowClass, MAX_LOADSTRING);
- MyRegisterClass(hInstance);
- // Выполнить инициализацию приложения:
- if (!InitInstance(hInstance, nCmdShow))
- {
- return FALSE;
- }
- HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT3));
- 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_WINDOWSPROJECT3));
- wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
- wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
- wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT3);
- 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 pen = CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
- HPEN carpen = CreatePen(PS_SOLID, 2, RGB(0, 0, 0));
- HBRUSH white = CreateSolidBrush(RGB(0, 0, 0));
- HBRUSH brushblack = CreateSolidBrush(RGB(0, 0, 0));
- HBRUSH whiteblue = CreateSolidBrush(RGB(154, 166, 230));
- HBRUSH brush = CreateSolidBrush(RGB(0, 255, 234));
- HBRUSH brushback = CreateSolidBrush(RGB(120, 230, 234));
- HBRUSH brushwheel = CreateSolidBrush(RGB(31, 21, 1));
- HBRUSH brushdisk = CreateSolidBrush(RGB(110, 106, 70));
- POINT White[4];
- White[0].x = 10;//Контур
- White[0].y = 10;
- White[1].x = 1320;
- White[1].y = 10;
- White[2].x = 1320;
- White[2].y = 650;
- White[3].x = 10;
- White[3].y = 650;
- White[4].x = 10;
- White[4].y = 10;
- SelectObject(hdc, white);
- Polygon(hdc, White, 5);//
- POINT points[50];
- points[0].x = 10;//Контур
- points[0].y = 10;
- points[1].x = 1320;
- points[1].y = 10;
- points[2].x = 1320;
- points[2].y = 650;
- points[3].x = 10;
- points[3].y = 650;
- points[4].x = 10;
- points[4].y = 10;
- SelectObject(hdc, pen);
- Polyline(hdc, points, 5);//
- POINT car[50];
- int carx[50] = { 130,130,180,360,360,380,980,1130,1280,1290,1240,130 };
- int cary[50] = { 490,280,180,180,90,40,40,220,220,410,490,490 };
- for (int i = 0; i <= 50; i++) {
- car[i].x = carx[i];
- car[i].y = cary[i];
- }
- //wheels + car
- SelectObject(hdc, brushwheel);//Левое дальнее колесо
- Ellipse(hdc, 340, 390, 480, 540);
- SelectObject(hdc, brushwheel);//right far колесо
- Ellipse(hdc, 1010, 400, 1150, 550);
- SelectObject(hdc, brush);//car paint
- Polygon(hdc, car, 12);
- SelectObject(hdc, brushwheel);//Левое ближнее колесо
- Ellipse(hdc, 270, 430, 410, 580);
- SelectObject(hdc, brushdisk);//Левое ближнее диск
- Ellipse(hdc, 300, 460, 380, 550);
- SelectObject(hdc, brushwheel);//right ближнее колесо
- Ellipse(hdc, 940, 430, 1080, 580);
- SelectObject(hdc, brushdisk);//right far disk
- Ellipse(hdc, 970, 460, 1050, 550);
- //wheels + car end
- //doors
- POINT door[50];
- int doorx[50] = { 360,360,450,650,650,390,360,360,450,920,920,640 };
- int doory[50] = { 180,340,440,440,170,170,180,340,440,440,170,170 };
- for (int i = 0; i <= 50; i++) {
- door[i].x = doorx[i];
- door[i].y = doory[i];
- }
- SelectObject(hdc, pen);//car paint
- Polyline(hdc, door, 12);
- //window
- SelectObject(hdc, whiteblue);
- Rectangle(hdc, 370, 180, 640, 310);
- Rectangle(hdc, 660, 180, 910, 310);
- POINT windowrec[3];
- windowrec[0].x = 940;
- windowrec[0].y = 180;
- windowrec[1].x = 940;
- windowrec[1].y = 310;
- windowrec[2].x = 1060;
- windowrec[2].y = 310;
- POINT windowmain[4];
- windowmain[0].x = 1010;
- windowmain[0].y = 90;
- windowmain[1].x = 1120;
- windowmain[1].y = 220;
- windowmain[2].x = 1080;
- windowmain[2].y = 260;
- windowmain[3].x = 960;
- windowmain[3].y = 130;
- Polygon(hdc, windowmain, 4);
- Polygon(hdc, windowrec, 3);
- POINT back[4];
- back[0].x = 200;
- back[0].y = 200;
- back[1].x = 350;
- back[1].y = 200;
- back[2].x = 350;
- back[2].y = 250;
- back[3].x = 180;
- back[3].y = 250;
- SelectObject(hdc, brushback);
- Polygon(hdc, back, 4);
- POINT muffler[4];
- muffler[0].x = 40;
- muffler[0].y = 400;
- muffler[1].x = 130;
- muffler[1].y = 400;
- muffler[2].x = 130;
- muffler[2].y = 450;
- muffler[3].x = 40;
- muffler[3].y = 450;
- SelectObject(hdc, brushblack);
- Polygon(hdc, muffler, 4);
- POINT z[5];
- z[0].x = 1230;
- z[0].y = 490;
- z[1].x = 1230;
- z[1].y = 310;
- z[2].x = 1280;
- z[2].y = 230;
- z[3].x = 1230;
- z[3].y = 310;
- z[4].x = 1085;
- z[4].y = 310;
- Polyline(hdc, z, 5);
- //hood down end
- //////////////////////////
- //hood up
- if (X) {
- HBRUSH brush1 = CreateSolidBrush(RGB(0, 255, 234));
- POINT hoodup[7];
- hoodup[0].x = 1140;
- hoodup[0].y = 230;
- hoodup[1].x = 1210;
- hoodup[1].y = 160;
- hoodup[2].x = 1170;
- hoodup[2].y = 260;
- hoodup[3].x = 1090;
- hoodup[3].y = 310;
- SelectObject(hdc, brush1);
- Polygon(hdc, hoodup, 4);
- //hood down
- POINT hood[7];
- hood[0].x = 1140;
- hood[0].y = 230;
- hood[1].x = 1280;
- hood[1].y = 230;
- hood[2].x = 1230;
- hood[2].y = 310;
- hood[3].x = 1230;
- hood[3].y = 310;
- hood[4].x = 1085;//
- hood[4].y = 310;
- hood[5].x = 1140;
- hood[5].y = 230;
- //black
- Polyline(hdc, hood, 6);
- EndPaint(hWnd, &ps);
- }
- }
- break;
- case WM_LBUTTONDOWN:///////
- {
- X = !X;
- InvalidateRect(hWnd, NULL, false);
- UpdateWindow(hWnd);
- 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;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement