Untitled
unknown
c_cpp
2 years ago
6.1 kB
9
Indexable
#include <windows.h> #include <windowsx.h> //Глобальные переменные, доступные всем функциям HPEN hBlackPen, hPticiPen, hSeaPen, hOblakaPen, hSunPen, hGrayPen;//Дескриптор новых перьев HBRUSH hNizBrush, hLeftBrush, hRightBrush, hBrush, hSeaBrush, hFlagBrush, hIlumBrush, hOblakaBrush, hSunBrush, hSkyBrush, hGrayBrush, hBlackBrush; //Прототипы используемых в программе функций LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); BOOL OnCreate(HWND, LPCREATESTRUCT); void OnPaint(HWND); void OnDestroy(HWND); // Главноая функция WinMain int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int) { char szClassName[] = "MainWindows"; char szTitle[] = "Графика"; MSG Msg; WNDCLASS WC; // Регистрация класса главного окна ZeroMemory(&WC, sizeof(WC)); WC.lpfnWndProc = WndProc; WC.hInstance = hInst; WC.hIcon = LoadIcon(NULL, IDI_APPLICATION); WC.hCursor = LoadCursor(NULL, IDC_ARROW); WC.hbrBackground = GetStockBrush(WHITE_BRUSH); WC.lpszClassName = L"MainWindows"; RegisterClass(&WC); //Создание главного окна и отображение его на экране HWND hwnd = CreateWindow(L"MainWindows", L"Графика", WS_OVERLAPPEDWINDOW, 100, 80, 625, 475, HWND_DESKTOP, NULL, hInst, NULL); //Отображение на экране ShowWindow(hwnd, SW_NORMAL); //Организация цикла обнаружения сообщений while (GetMessage(&Msg, NULL, 0, 0)) DispatchMessage(&Msg); return 0; } //Оконная функция главного окна LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { HANDLE_MSG(hwnd, WM_CREATE, OnCreate); HANDLE_MSG(hwnd, WM_PAINT, OnPaint);//Обработка сообщения WM_PAINT HANDLE_MSG(hwnd, WM_DESTROY, OnDestroy);//Обработка сообщения WM_DESTROY default: return(DefWindowProc(hwnd, msg, wParam, lParam)); } } //Функция обработки сообщения WM_PAINT void OnPaint(HWND hwnd) { PAINTSTRUCT ps;//Структура требуемая для рисования в рабочей области HDC hdc = BeginPaint(hwnd, &ps);//Получение контекста устройства SelectPen(hdc, hBlackPen); //Небо SelectBrush(hdc, hSkyBrush); Rectangle(hdc, -25, -25, 650, 500); //Море SelectPen(hdc, hSeaPen); SelectBrush(hdc, hSeaBrush); Ellipse(hdc, -120, 120, 80, 200); Ellipse(hdc, -20, 120, 200, 200); Ellipse(hdc, 100, 120, 300, 200); Ellipse(hdc, 220, 120, 400, 200); Ellipse(hdc, 340, 120, 500, 200); Ellipse(hdc, 440, 120, 600, 200); Ellipse(hdc, 550, 120, 700, 200); Rectangle(hdc, 0, 140, 650, 900); //Подлодка SelectPen(hdc, hGrayPen); SelectBrush(hdc, hGrayBrush); //люк Rectangle(hdc, 320, 250, 280, 200); //перископ Rectangle(hdc, 300, 210, 350, 220); //борт Ellipse(hdc, 500, 250, 100, 350); //Илюминаторы SelectBrush(hdc, hIlumBrush); Ellipse(hdc, 150, 270, 225, 320); Ellipse(hdc, 275, 260, 205, 310); //LineTo(hdc, 450, 350); //LineTo(hdc, 150, 350); //LineTo(hdc, 100, 250); /* //Основание корабля SelectBrush(hdc, hNizBrush); MoveToEx(hdc, 100, 250, NULL); LineTo(hdc, 500, 250); LineTo(hdc, 450, 350); LineTo(hdc, 150, 350); LineTo(hdc, 100, 250); //Левый парус SelectBrush(hdc, hLeftBrush); MoveToEx(hdc, 100, 250, NULL); LineTo(hdc, 250, 40); LineTo(hdc, 250, 250); LineTo(hdc, 100, 250); //Правый парус SelectBrush(hdc, hRightBrush); MoveToEx(hdc, 420, 250, NULL); LineTo(hdc, 250, 80); LineTo(hdc, 250, 250); LineTo(hdc, 420, 250); //Флажок SelectBrush(hdc, hFlagBrush); MoveToEx(hdc, 250, 40, NULL); LineTo(hdc, 250, 80); LineTo(hdc, 300, 80); LineTo(hdc, 280, 60); LineTo(hdc, 300, 40); LineTo(hdc, 250, 40); //Илюминаторы SelectBrush(hdc, hIlumBrush); Ellipse(hdc, 130, 260, 200, 310); Ellipse(hdc, 275, 260, 205, 310); //Море SelectPen(hdc, hSeaPen); SelectBrush(hdc, hSeaBrush); Ellipse(hdc, -120, 320, 80, 400); Ellipse(hdc, -20, 320, 200, 400); Ellipse(hdc, 100, 320, 300, 400); Ellipse(hdc, 220, 320, 400, 400); Ellipse(hdc, 340, 320, 500, 400); Ellipse(hdc, 440, 320, 600, 400); Ellipse(hdc, 550, 320, 700, 400); Rectangle(hdc, 0, 340, 650, 600); //Птицы SelectPen(hdc, hPticiPen); MoveToEx(hdc, 10, 40, NULL); LineTo(hdc, 40, 60); LineTo(hdc, 65, 35); MoveToEx(hdc, 65, 95, NULL); LineTo(hdc, 95, 115); LineTo(hdc, 120, 90); MoveToEx(hdc, 30, 140, NULL); LineTo(hdc, 50, 160); LineTo(hdc, 75, 135); //Солнце SelectPen(hdc, hSunPen); SelectBrush(hdc, hSunBrush); Ellipse(hdc, 505, 25, 575, 80); //Облака SelectPen(hdc, hOblakaPen); SelectBrush(hdc, hOblakaBrush); Ellipse(hdc, 490, 25, 550, 70); Ellipse(hdc, 470, 35, 530, 85); Ellipse(hdc, 480, 45, 560, 90); */ EndPaint(hwnd, &ps); } //Функция обработки сообщения WM_DESTROY void OnDestroy(HWND) { PostQuitMessage(0); } //Функция обработки сообщения WM_CREATE BOOL OnCreate(HWND, LPCREATESTRUCT) { //Создадим новые перья hBlackPen = CreatePen(PS_SOLID, 3, RGB(0, 0, 0)); hSeaPen = CreatePen(PS_SOLID, 3, RGB(30, 144, 255)); hOblakaPen = CreatePen(PS_SOLID, 3, RGB(255, 255, 255)); hSunPen = CreatePen(PS_SOLID, 3, RGB(255, 255, 0)); hGrayPen = CreatePen(PS_SOLID, 3, RGB(180, 180, 180)); //Создадим новые кисти hNizBrush = CreateSolidBrush(RGB(255, 222, 183)); hBlackBrush = CreateSolidBrush(RGB(0, 0, 0)); hGrayBrush = CreateSolidBrush(RGB(180, 180, 180)); hRightBrush = CreateSolidBrush(RGB(255, 0, 0)); hFlagBrush = CreateSolidBrush(RGB(0, 255, 127)); hIlumBrush = CreateSolidBrush(RGB(70, 130, 180)); hSeaBrush = CreateSolidBrush(RGB(30, 144, 255)); hOblakaBrush = CreateSolidBrush(RGB(255, 255, 255)); hSunBrush = CreateSolidBrush(RGB(255, 255, 0)); hSkyBrush = CreateSolidBrush(RGB(135, 206, 250)); return TRUE; }
Editor is loading...