Untitled
4unknown
c_cpp
2 years ago
4.8 kB
13
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...