5-6
unknown
c_cpp
3 years ago
4.9 kB
7
Indexable
#include <windows.h>
#include <windowsx.h>
//Глобальные переменные, доступные всем функциям
HPEN hBlackPen, hPticiPen, hSeaPen, hOblakaPen, hSunPen, hNizPen;//Дескриптор новых перьев
HBRUSH hNizBrush, hLeftBrush, hRightBrush, hBrush, hSeaBrush, hFlagBrush, hIlumBrush, hOblakaBrush, hSunBrush, hIgor,
hSkyBrush;
//Прототипы используемых в программе функций
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 = szClassName;
RegisterClass(&WC);
//Создание главного окна и отображение его на экране
HWND
hwnd = CreateWindow(szClassName, szTitle, 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);
//Домик
SelectBrush(hdc, hNizBrush);
SelectPen(hdc, hNizPen);
Rectangle(hdc, 150, 150, 450, 350);//osnova
SelectPen(hdc, hBlackPen);
SelectBrush(hdc, hSkyBrush);
Rectangle(hdc, 180,180, 250,250);//okna
Rectangle(hdc, 340, 180, 410, 250);//
MoveToEx(hdc, 215, 180, NULL);
LineTo(hdc, 215, 250);//ramki1
LineTo(hdc, 215, 215);
LineTo(hdc, 180, 215);
LineTo(hdc, 250, 215);
MoveToEx(hdc, 375, 180,NULL);//ramki2
LineTo(hdc, 375, 250);
LineTo(hdc, 375, 215);
LineTo(hdc, 340, 215);
LineTo(hdc, 410, 215);
//Крыша
SelectPen(hdc,hPticiPen);
SelectBrush(hdc,hIgor);
MoveToEx(hdc, 150, 150, NULL);
LineTo(hdc, 300, 80);
LineTo(hdc, 450, 150);
LineTo(hdc, 150, 150);
FloodFill(hdc, 190,140, RGB(128, 64, 48));
//Трава
SelectPen(hdc, hSeaPen);
SelectBrush(hdc, hSeaBrush);
Ellipse(hdc, -120, 320, 700, 400);
Rectangle(hdc, 0, 340, 650, 600);
//Солнце
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(0, 255, 0));
hPticiPen = CreatePen(PS_SOLID, 2, RGB(128,64,48));
hOblakaPen = CreatePen(PS_SOLID, 3, RGB(255, 255, 255));
hSunPen = CreatePen(PS_SOLID, 3, RGB(255, 255, 0));
hNizPen = CreatePen(PS_SOLID, 3, RGB(255, 222, 183));
//Создадим новые кисти
hNizBrush = CreateSolidBrush(RGB(255, 222, 183));
hLeftBrush = CreateSolidBrush(RGB(0, 255, 255));
hRightBrush = CreateSolidBrush(RGB(255, 0, 0));
hFlagBrush = CreateSolidBrush(RGB(0, 255, 127));
hIlumBrush = CreateSolidBrush(RGB(70, 130, 180));
hSeaBrush = CreateSolidBrush(RGB(0, 255, 0));
hOblakaBrush = CreateSolidBrush(RGB(255, 255, 255));
hSunBrush = CreateSolidBrush(RGB(255, 255, 0));
hSkyBrush = CreateSolidBrush(RGB(135, 206, 250));
hIgor = CreateSolidBrush(RGB(128, 64, 48));
return TRUE;
}Editor is loading...