Untitled
4unknown
c_cpp
2 years ago
4.8 kB
6
Indexable
#include <windows.h> #include <windowsx.h> /*Прототипы используемых в программе функций*/ LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); BOOL OnCreate(HWND, LPCREATESTRUCT);//Прототип функции OnCreate void OnPaint(HWND);//Прототип функции OnPaint void OnDestroy(HWND);//Прототип функции OnDestroy /*Глобальные переменные, доступные всем функциям*/ HPEN hRedPen, hGreenPen, hBluePen;//Дескрипторы новых нерьев HBRUSH hRedBrush, hGreenBrush, hBlueBrush;//и новых кистей /*Главная функция WinMain */ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int) { char szClassName[] = "MainWindow"; char szTitle[] = "Программа 3"; 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 = CreateSolidBrush(RGB(200, 200, 100)); wc.lpszClassName = L"MainWindow"; RegisterClass(&wc); /* Создание главного окна и отображение его на экране */ HWND hwnd = CreateWindow(L"MainWindow", L"Программа 3", WS_OVERLAPPEDWINDOW, 250, 150, 500, 200, HWND_DESKTOP, NULL, hInst, NULL); ShowWindow(hwnd, SW_SHOWNORMAL); /* Организация цикла обнаружения сообщений */ while (GetMessage(&Msg, NULL, 0, 0)) DispatchMessage(&Msg); return 0; } /* Оконная функция WndProc главного окна */ 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_CREATE*/ BOOL OnCreate(HWND, LPCREATESTRUCT) { /*Создадим новые перья*/ hRedPen = CreatePen(PS_SOLID, 4, RGB(150, 0, 0)); hGreenPen = CreatePen(PS_SOLID, 10, RGB(0, 150, 0)); hBluePen = CreatePen(PS_SOLID, 20, RGB(0, 0, 150)); /*Создадим новые кисти*/ hRedBrush = CreateSolidBrush(RGB(255, 120, 120)); hGreenBrush = CreateSolidBrush(RGB(120, 255, 120)); hBlueBrush = CreateSolidBrush(RGB(120, 120, 255)); return TRUE; } /*Функция обработки сообщения WM_PAINT*/ void OnDestroy(HWND) { PostQuitMessage(0); } /*Функция обработки события WM_PAINT*/ void OnPaint(HWND hwnd) { PAINTSTRUCT ps;//Структура, требуемая для рисования в рабочей области char szText1[] = "Rectangle"; char szText2[] = "Ellipse"; char szText3[] = "Pie"; char szText4[] = "Chord"; HDC hdc = BeginPaint(hwnd, &ps);//Получение контекста устройства SetBkMode(hdc, TRANSPARENT);//Прозрачный фон под текстом SetTextColor(hdc, RGB(0, 0, 255));//Синий цвут текста /*Выведем четыре строки текста*/ TextOut(hdc, 25, 5, L"Rectangle", strlen(szText1)); TextOut(hdc, 155, 5, L"Ellipse", strlen(szText2)); TextOut(hdc, 280, 5, L"Pie", strlen(szText3)); TextOut(hdc, 395, 5, L"Chord", strlen(szText4)); /*Выведем четыре фигуры*/ Ellipse(hdc, 130, 40, 230, 140);//Круг новыми инструментами SelectPen(hdc, hRedPen);//Выберем в контекст новое перо SelectBrush(hdc, hRedBrush);//и новую кисть Rectangle(hdc, 10, 40, 110, 140);//Квадрат инструментами по умолчанию SelectPen(hdc, hGreenPen);//Выберем новое перо SelectBrush(hdc, hGreenBrush);//и новую кисть Chord(hdc, 370, 40, 470, 140, 470, 125, 370, 125);//Сегмент SelectPen(hdc, hBluePen);//Выберем в контекст новое перо SelectBrush(hdc, hBlueBrush);//и новую кисть Pie(hdc, 250, 40, 350, 140, 350, 140, 250, 140);//Сектор опять новыми инструментами EndPaint(hwnd, &ps);//Освобождение контекста устройства }
Editor is loading...