Untitled

mail@pastecode.io avatar
unknown
c_cpp
a year ago
6.1 kB
5
Indexable
Never
#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;
}