Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Zvitische.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
353.19 Кб
Скачать

Лабораторна робота № 2 Дослідження особливостей організації ресурсів інтерфейсу користувача для Windows-додатків

Програма:

#include "stdafx.h"

#include "windows.h"

#include "resource.h"

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM,LPARAM);

int APIENTRY WinMain(

HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

HWND hwnd;

MSG msg;

WNDCLASS w;

memset(&w,0,sizeof(WNDCLASS));

w.style = CS_HREDRAW | CS_VREDRAW;

w.lpfnWndProc = WndProc;

w.hInstance = hInstance;

w.hbrBackground = (HBRUSH)COLOR_WINDOW;

w.lpszClassName = "C Windows";

//w.lpszMenuName=MAKEINTRESOURCE(IDR_MENU1);

RegisterClass(&w);

hwnd = CreateWindow("C Windows","C Windows", WS_OVERLAPPEDWINDOW,

10,10,600,480,NULL,NULL,hInstance,NULL);

ShowWindow(hwnd,nCmdShow);

HMENU hMenu=LoadMenu(hInstance, MAKEINTRESOURCE(IDR_MENU1));

SetMenu(hwnd, hMenu);

UpdateWindow(hwnd);

while(GetMessage(&msg,NULL,0,0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return msg.wParam;

}

LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wparam,LPARAM lparam)

{

if (Message == WM_DESTROY)

{

PostQuitMessage(0);

return 0;

}

if (Message == WM_LBUTTONUP)

{

MessageBox(hwnd, "WM_LBUTTONUP", "Message", MB_ICONINFORMATION | MB_OK);

}

//обробка подій меню

if (Message == WM_COMMAND)

{

switch ( LOWORD(wparam) )

{

case ID_DRAWTEXT:

{

HDC dc= GetDC(hwnd);

RECT rect;

GetClientRect(hwnd, &rect);

DrawText(dc, "Hello!", -1, &rect, DT_CENTER);

ReleaseDC(hwnd, dc);

break;

}

case ID_TEXTOUT:

{

HDC dc= GetDC(hwnd);

SelectObject(dc,GetStockObject(ANSI_VAR_FONT));

SetTextColor(dc,RGB(0,0,255));

TextOut(dc,10,150,"Hello again!",strlen("Hello again!"));

ReleaseDC(hwnd, dc);

break;

}

case ID_LINE:

{

HDC dc= GetDC(hwnd);

MoveToEx(dc, 100, 100, NULL);

HPEN pen= CreatePen(PS_SOLID, 5, RGB(200, 100, 100));

SelectObject(dc, pen);

LineTo(dc, 100, 300);

DeleteObject(pen);

ReleaseDC(hwnd, dc);

break;

}

case ID_CURVE:

{

HDC dc= GetDC(hwnd);

HPEN pen= CreatePen(PS_SOLID, 5, RGB(100, 200, 100));

POINT p[4];

p[0].x=100; p[0].y=20;

p[1].x=30; p[1].y=400;

p[2].x=50; p[2].y=60;

p[3].x=70; p[3].y=80;

SelectObject(dc, pen);

PolyBezier(dc, p, 4);

DeleteObject(pen);

ReleaseDC(hwnd, dc);

break;

}

case ID_RECTANGLE:

{

HDC dc= GetDC(hwnd);

RECT rect;

rect.left=10;rect.right=60;

rect.top=100;rect.bottom=150;

FillRect(dc,&rect,CreateSolidBrush(RGB(255,0,0)));

ReleaseDC(hwnd, dc);

break;

}

case ID_ELLIPSE:

{

HDC dc= GetDC(hwnd);

HRGN rgn;

rgn=CreateEllipticRgn(20,20,300,100);

FillRgn(dc,rgn,CreateSolidBrush(RGB(0,255,0)));

ReleaseDC(hwnd, dc);

break;

}

case ID_INFO:

{

MessageBox(hwnd, "Лабораторна робота з ОС", "Info", MB_ICONINFORMATION);

break;

}

}

}

return DefWindowProc(hwnd,Message,wparam,lparam);

}

Програма:

#include "stdafx.h"

#include "windows.h"

#include "resource.h"

HDC dc, memDc;

unsigned short int maxX, maxY;

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM,LPARAM);

int APIENTRY WinMain(

HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

HWND hwnd;

MSG msg;

WNDCLASS w;

memset(&w,0,sizeof(WNDCLASS));

w.style = CS_HREDRAW | CS_VREDRAW;

w.lpfnWndProc = WndProc;

w.hInstance = hInstance;

w.hbrBackground = (HBRUSH)COLOR_WINDOW;

w.lpszClassName = "C Windows";

//w.lpszMenuName=MAKEINTRESOURCE(IDR_MENU1);

RegisterClass(&w);

hwnd = CreateWindow("C Windows","C Windows", WS_OVERLAPPEDWINDOW,

10,10,600,480,NULL,NULL,hInstance,NULL);

ShowWindow(hwnd,nCmdShow);

HMENU hMenu=LoadMenu(hInstance, MAKEINTRESOURCE(IDR_MENU1));

SetMenu(hwnd, hMenu);

UpdateWindow(hwnd);

while(GetMessage(&msg,NULL,0,0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return msg.wParam;

}

LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wparam,LPARAM lparam)

{

if (Message == WM_DESTROY)

{

PostQuitMessage(0);

return 0;

}

if (Message == WM_LBUTTONUP)

{

MessageBox(hwnd, "WM_LBUTTONUP", "Message", MB_ICONINFORMATION | MB_OK);

}

// створення меню

if (Message == WM_CREATE)

{

maxX=GetSystemMetrics(SM_CXSCREEN);

maxY=GetSystemMetrics(SM_CYSCREEN);

dc= GetDC(hwnd);

memDc=CreateCompatibleDC(dc);

SelectObject(memDc,CreateCompatibleBitmap(dc,maxX,maxY));

PatBlt(memDc,0,0,maxX,maxY,PATCOPY);

ReleaseDC(hwnd,dc);

}

if (Message == WM_PAINT)

{

PAINTSTRUCT ps;

dc= BeginPaint(hwnd, &ps);

BitBlt(dc,0,0,maxX,maxY,memDc,0,0,SRCCOPY);

EndPaint(hwnd, &ps);

}

// обробка подій меню

if (Message == WM_COMMAND)

{

dc= GetDC(hwnd);

switch ( LOWORD(wparam) )

{

case ID_DRAWTEXT:

{

RECT rect;

GetClientRect(hwnd, &rect);

DrawText(memDc, "Hello!", -1, &rect, DT_CENTER);

InvalidateRect(hwnd, NULL, TRUE);

break;

}

case ID_TEXTOUT:

{

SelectObject(dc,GetStockObject(ANSI_VAR_FONT));

SetTextColor(dc,RGB(0,0,255));

TextOut(memDc,10,150,"Hello again!",strlen("Hello again!"));

InvalidateRect(hwnd, NULL, TRUE);

break;

}

case ID_LINE:

{

MoveToEx(dc, 100, 100, NULL);

HPEN pen= CreatePen(PS_SOLID, 5, RGB(200, 100, 100));

SelectObject(memDc, pen);

LineTo(memDc, 100, 300);

DeleteObject(pen);

InvalidateRect(hwnd, NULL, TRUE);

break;

}

case ID_CURVE:

{

HPEN pen= CreatePen(PS_SOLID, 5, RGB(100, 200, 100));

POINT p[4];

p[0].x=100; p[0].y=20;

p[1].x=30; p[1].y=400;

p[2].x=50; p[2].y=60;

p[3].x=70; p[3].y=80;

SelectObject(dc, pen);

PolyBezier(memDc, p, 4);

DeleteObject(pen);

InvalidateRect(hwnd, NULL, TRUE);

break;

}

case ID_RECTANGLE:

{

RECT rect;

rect.left=10;rect.right=60;

rect.top=100;rect.bottom=150;

FillRect(memDc,&rect,CreateSolidBrush(RGB(255,0,0)));

InvalidateRect(hwnd, NULL, TRUE);

break;

}

case ID_ELLIPSE:

{

HRGN rgn;

rgn=CreateEllipticRgn(20,20,300,100);

FillRgn(memDc,rgn,CreateSolidBrush(RGB(0,255,0)));

InvalidateRect(hwnd, NULL, TRUE);

break;

}

case ID_INFO:

{

MessageBox(hwnd, " Лабораторна робота з ОС", "Info", MB_ICONINFORMATION);

break;

}

ReleaseDC(hwnd, dc);

}

}

return DefWindowProc(hwnd,Message,wparam,lparam);

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]