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

7. Створити програму у Windows (Win32 api), яка забезпечує при отриманні повідомлення wm_paint вивід текстових строк у вікно.

#include <windows.h>

boolRegClass(WNDPROC,LPCTSTR,UINT);

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

HINSTANCE hInstance;

charszMainClass[]="MainClass";

charszTitle[]="Выводтекста";

int WINAPI WinMain(HINSTANCE hInst,HINSTANCEhPrevInst,

LPSTR lpszCmdLine, intnCmdShow)

{

MSG msg;

hInstance=hInst;

HWND hwnd;

if (!RegClass(WndProc,szMainClass,COLOR_WINDOW))

return FALSE;

hwnd=CreateWindow(szMainClass,szTitle,WS_POPUPWINDOW|WS_CAPTION|

WS_MINIMIZEBOX|WS_VISIBLE,0,0,500,500,0,0,hInstance,NULL);

if (!hwnd) return FALSE;

ShowWindow(hwnd,SW_SHOWMAXIMIZED);

UpdateWindow(hwnd);

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

DispatchMessage(&msg);

returnmsg.wParam;

}

boolRegClass(WNDPROC Proc,LPCTSTRszName,UINTbrBackground)

{

WNDCLASS wc;

wc.style=CS_HREDRAW|CS_VREDRAW;

wc.cbClsExtra=wc.cbWndExtra=0;

wc.lpfnWndProc=Proc;

wc.hInstance=hInstance;

wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);

wc.hCursor=LoadCursor(NULL,IDC_ARROW);

wc.hbrBackground=(HBRUSH)(brBackground+1);

wc.lpszMenuName=(LPCTSTR)NULL;

wc.lpszClassName=szName;

return (RegisterClass(&wc)!=0);

}LRESULT CALLBACK WndProc(HWND hwnd,UINTmsg,WPARAMwParam,LPARAMlParam)

{charszText[]="Выводимтекст";

static short cx,cy;

switch(msg)

{

case WM_SIZE:

{cx=LOWORD(lParam);

cy=HIWORD(lParam);

return 0;

}

case WM_PAINT:

{

PAINTSTRUCT ps;

HDC hdc=BeginPaint(hwnd,&ps);

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

SetBkColor(hdc,RGB(0,255,255));

SetTextAlign(hdc,TA_CENTER);

TextOut(hdc,cx/2,cy/2,szText,strlen(szText));

EndPaint(hwnd,&ps);

return 0;

}

case WM_DESTROY:

{PostQuitMessage(0); return 0;}

}

returnDefWindowProc(hwnd,msg,wParam,lParam);

}

8) Створити програму у Windows (Win32 api), яка забезпечує при отриманні повідомлення wm_paint вивід різноманітних типів ліній у вікно.

#include <windows.h>

boolRegClass(WNDPROC,LPCTSTR,UINT);

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

HINSTANCE hInstance;

charszMainClass[]="MainClass";

charszTitle[]="Выводтекста";

int WINAPI WinMain(HINSTANCE hInst,HINSTANCEhPrevInst,

LPSTR lpszCmdLine, intnCmdShow)

{

MSG msg;

hInstance=hInst;

HWND hwnd;

if (!RegClass(WndProc,szMainClass,COLOR_WINDOW))

return FALSE;

hwnd=CreateWindow(szMainClass,szTitle,WS_POPUPWINDOW|WS_CAPTION|

WS_MINIMIZEBOX|WS_VISIBLE,0,0,500,500,0,0,hInstance,NULL);

if (!hwnd) return FALSE;

ShowWindow(hwnd,SW_SHOWMAXIMIZED);

UpdateWindow(hwnd);

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

DispatchMessage(&msg);

returnmsg.wParam;

}

boolRegClass(WNDPROC Proc,LPCTSTRszName,UINTbrBackground)

{

WNDCLASS wc;

wc.style=CS_HREDRAW|CS_VREDRAW;

wc.cbClsExtra=wc.cbWndExtra=0;

wc.lpfnWndProc=Proc;

wc.hInstance=hInstance;

wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);

wc.hCursor=LoadCursor(NULL,IDC_ARROW);

wc.hbrBackground=(HBRUSH)(brBackground+1);

wc.lpszMenuName=(LPCTSTR)NULL;

wc.lpszClassName=szName;

return (RegisterClass(&wc)!=0);

}LRESULT CALLBACK WndProc(HWND hwnd,UINTmsg,WPARAMwParam,LPARAMlParam)

{charszText[]="Выводимтекст";

static short cx,cy;

switch(msg)

{

case WM_SIZE:

{cx=LOWORD(lParam);

cy=HIWORD(lParam);

return 0;

}

case WM_PAINT:

{

PAINTSTRUCT ps;

HDC hdc=BeginPaint(hwnd,&ps);

//Создание красного пера

hPen=CreatePen(1,4,RGB(255,25,0));

SelectObject(hdc, hPen);

//синусоида

for(i=0; i<450; i++){

y=180.0*(exp(-i*0.01))*sin(pi*i*(200.0/400.0)/180.0); // Синусоиды можно поменть на любую др.

LineTo(hdc, i, (int)y);

}

//Делаем перо снова чёрным

hPen=CreatePen(1,1,RGB(0,0,0));

SelectObject(hdc, hPen);

//синусоида

for(i=0; i<450; i++){

y=180.0*(exp(-i*0.01))*sin(pi*i*(456.0/40.0)/76.0); // любые линии можно не синусоиду

LineTo(hdc, i, (int)y);

}

EndPaint(hwnd,&ps);

return 0;

}

case WM_DESTROY:

{PostQuitMessage(0); return 0;}

}

returnDefWindowProc(hwnd,msg,wParam,lParam);

}

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