Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
API_lab_Гребенюк(всі лістинги л_р).doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
416 Кб
Скачать
☆

Лабораторна робота 8

«main.cpp» (Визначення десяткового коду клавіші)

#include <windows.h>

#include <iostream>

#include <stdio.h>

char szIconName[] = "ICON2";

char szCursorName[] = "CURSOR1";

using namespace std;

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

char szProgName[]="Progname";

char szText[]="";

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{

HWND hWnd;

MSG lpMsg;

WNDCLASS w;

w.lpszClassName=szProgName;

w.hInstance=hInstance;

w.lpfnWndProc=WndProc;

w.hCursor=LoadCursor(NULL, szCursorName);

w.hIcon=LoadIcon(hInstance, szIconName);

w.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);

w.style=CS_HREDRAW|CS_VREDRAW; w.cbClsExtra=0;

w.cbWndExtra=0;

if(!RegisterClass(&w))

return 0;

hWnd=CreateWindow(szProgName,

"Гребенюк 8 лаб ПЗС-1644 приклад з мет",

WS_OVERLAPPEDWINDOW, 100, 100, 300, 300,

(HWND)NULL,

(HMENU)NULL,

(HINSTANCE)hInstance,

(HINSTANCE)NULL);

ShowWindow(hWnd, nCmdShow);

UpdateWindow(hWnd);

while(GetMessage(&lpMsg, NULL, 0, 0)) {

TranslateMessage(&lpMsg);

DispatchMessage(&lpMsg);

}

return(lpMsg.wParam);

}

LRESULT CALLBACK WndProc(HWND hWnd, UINT messg,

WPARAM wParam, LPARAM lParam)

{

HDC hdc;

switch(messg)

{

unsigned int key;

case WM_KEYDOWN:

key=wParam;

itoa(key, szText, 10);

hdc=GetDC(hWnd);

TextOut(hdc, 10,10, strcat(szText, " - 10-річна система"), strlen(szText)+19);

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

return(DefWindowProc(hWnd, messg, wParam, lParam)); }

return 0;

}

«main.cpp»(Текстовий редактор з Memo-полем)

#include <windows.h>

#include <iostream>

#include <string>

#include <algorithm>

using namespace std;

HWND memo1;

static int sx, sy;

char szProgName[]="Progname";

char szText[]="";

char szIconName[] = "ICON2";

char szCursorName[] = "CURSOR1";

char szMenu[]="MainMenu";

HDC hdc, hmdc;

PAINTSTRUCT ps;

LOGFONT lf;

HFONT hFont;

unsigned int x=0, y=0;

LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {

int keyAnswer;

switch(Message) {

unsigned int key;

case WM_SIZE:

sx = LOWORD(lParam); //ширина

sy = HIWORD(lParam); //высота

case WM_CREATE:

memo1 = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT", "",ES_MULTILINE | WS_VISIBLE | WS_CHILD | WS_BORDER | WS_TABSTOP,10,10,sx-20,sy-20,

hwnd, (HMENU) NULL, NULL, NULL);

break;

case WM_DESTROY: {

PostQuitMessage(0);

break;

}

case WM_COMMAND:

switch(LOWORD(wParam)){

case 2:

MessageBox(NULL, "Гребенюк Іван Андрійович, ПЗС-1644", "АПІ_Гребенюк", MB_OK | MB_ICONINFORMATION);

break;

case 3:

MessageBox(NULL, "Він холодний всередині", "АПІ_Гребенюк", MB_OK | MB_ICONINFORMATION);

break;

case 4:

MessageBox(NULL, "Вона мокра", "АПІ_Гребенюк", MB_OK | MB_ICONINFORMATION);

break;

case 5:

MessageBox(NULL, "Не йди на червоне світло світлофора", "АПІ_Гребенюк", MB_OK | MB_ICONSTOP);

break;

case 6:

keyAnswer = MessageBox(NULL, "Не сувай пальці в розетку", "АПІ_Гребенюк", MB_YESNOCANCEL | MB_ICONSTOP);

if(7 == keyAnswer || 2 == keyAnswer) MessageBox(NULL, "Не сувай", "АПІ_Гребенюк", MB_OK | MB_ICONSTOP);

else MessageBox(NULL, "Молодець!", "АПІ_Гребенюк", MB_OK | MB_ICONINFORMATION);

break;

case 7:

MessageBox(NULL, "Не сиди довго за ПК", "АПІ_Гребенюк", MB_CANCELTRYCONTINUE | MB_ICONEXCLAMATION);

break;

case 8:

MessageBox(NULL, "Не вбий", "АПІ_Гребенюк", MB_YESNO | MB_ICONSTOP);

break;

case 9:

MessageBox(NULL, "Не вкради", "АПІ_Гребенюк", MB_YESNO | MB_ICONSTOP);

break;

case 10:

MessageBox(NULL, "Не збреши", "АПІ_Гребенюк", MB_YESNO | MB_ICONSTOP);

break;

////////

case 1:

exit(1);

break;

}

break;

default:

return DefWindowProc(hwnd, Message, wParam, lParam);

}

return 0;

}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {

WNDCLASSEX wc;

HWND hwnd;

MSG Msg;

memset(&wc,0,sizeof(wc));

wc.cbSize = sizeof(WNDCLASSEX);

wc.lpfnWndProc = WndProc;

wc.hInstance = hInstance;

wc.hCursor = LoadCursor(hInstance, szCursorName);

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

wc.lpszClassName = "WindowClass";

wc.hIcon = LoadIcon(hInstance, szIconName);

wc.hIconSm = LoadIcon(hInstance, szIconName);

wc.lpszMenuName=szMenu;

if(!RegisterClassEx(&wc)) {

MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);

return 0;

}

hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","Гребенюк ПЗС-1644 лаб_8",WS_VISIBLE|WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT,

CW_USEDEFAULT,

640,

480,

NULL,NULL,hInstance,NULL);

if(hwnd == NULL) {

MessageBox(NULL, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);

return 0;

}

while(GetMessage(&Msg, NULL, 0, 0) > 0) {

TranslateMessage(&Msg);/

DispatchMessage(&Msg);

}

return Msg.wParam;

}

«main.cpp» (Виведення тексту на поле вікна)

#include <windows.h>

#include <iostream>

#include <string>

#include <algorithm>

using namespace std;

char szProgName[]="Progname";

char szText[]="";

char szIconName[] = "ICON2";

char szCursorName[] = "CURSOR1";

char szMenu[]="MainMenu";

HDC hdc, hmdc;

PAINTSTRUCT ps;

LOGFONT lf;

HFONT hFont;

unsigned int x=0, y=0;

LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {

int keyAnswer;

switch(Message) {

unsigned int key;

case WM_KEYDOWN:

if(wParam == VK_RETURN) {

y += 20;

x = -10;

}

if(wParam == VK_ESCAPE) exit(1);

break;

case WM_CHAR:

{

if(x>=400 && wParam != VK_RETURN) {

y = y + 20;

x = 0;

}

if(x<10 && y < 20) {

x=0;

TextOut(hdc, 10+1+x,10+y, "|", 1);

}

if(wParam == VK_BACK && y > 0 && x<10 ){

y = y - 20;

x = 400;

}

if(wParam != VK_RETURN) TextOut(hdc, 10+1+x,10+y, "_", 1);

if(wParam == VK_BACK && x > 0){

TextOut(hdc, 10+8+x,10+y, " ", 1);

TextOut(hdc, 10+5+x,10+y, " ", 1);

TextOut(hdc, 10+1+x,10+y, " ", 1);

x = x - 10;

TextOut(hdc, 10+8+x,10+y, " ", 1);

TextOut(hdc, 10+5+x,10+y, " ", 1);

TextOut(hdc, 10+1+x,10+y, " ", 1);

}

else if(wParam == VK_BACK && y<20 && x!=0) TextOut(hdc, 10+1+x,10+y, "|", 1);

else if(wParam == VK_BACK && y<20) TextOut(hdc, 10+1+x,10+y, "|", 1);

else {

key=wParam;

wsprintf(szText, "%c", key);

hdc=GetDC(hwnd);

if(isupper(key) && wParam == 'W') {TextOut(hdc, 10+1+x,10+y, szText, 1);

x+=15;

}

else if(isupper(key)){

TextOut(hdc, 10+1+x,10+y, szText, 1);

x+=12;

}

else

{TextOut(hdc, 10+1+x,10+y, szText, 1);

x+=10; }

}

}

break;

case WM_DESTROY: {

PostQuitMessage(0);

break;

}

case WM_COMMAND:

switch(LOWORD(wParam)){

case 2:

MessageBox(NULL, "Гребенюк Іван Андрійович, ПЗС-1644", "АПІ_Гребенюк", MB_OK | MB_ICONINFORMATION);

break;

case 3:

MessageBox(NULL, "Він холодний всередині", "АПІ_Гребенюк", MB_OK | MB_ICONINFORMATION);

break;

case 4:

MessageBox(NULL, "Вона мокра", "АПІ_Гребенюк", MB_OK | MB_ICONINFORMATION);

break;

case 5:

MessageBox(NULL, "Не йди на червоне світло світлофора", "АПІ_Гребенюк", MB_OK | MB_ICONSTOP);

break;

case 6:

keyAnswer = MessageBox(NULL, "Не сувай пальці в розетку", "АПІ_Гребенюк", MB_YESNOCANCEL | MB_ICONSTOP);

if(7 == keyAnswer || 2 == keyAnswer) MessageBox(NULL, "Не сувай", "АПІ_Гребенюк", MB_OK | MB_ICONSTOP);

else MessageBox(NULL, "Молодець!", "АПІ_Гребенюк", MB_OK | MB_ICONINFORMATION);

break;

case 7:

MessageBox(NULL, "Не сиди довго за ПК", "АПІ_Гребенюк", MB_CANCELTRYCONTINUE | MB_ICONEXCLAMATION);

break;

case 8:

MessageBox(NULL, "Не вбий", "АПІ_Гребенюк", MB_YESNO | MB_ICONSTOP);

break;

case 9:

MessageBox(NULL, "Не вкради", "АПІ_Гребенюк", MB_YESNO | MB_ICONSTOP);

break;

case 10:

MessageBox(NULL, "Не збреши", "АПІ_Гребенюк", MB_YESNO | MB_ICONSTOP);

break;

case 1:

exit(1);

break;

}

break;

default:

return DefWindowProc(hwnd, Message, wParam, lParam);

}

return 0;

}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {

WNDCLASSEX wc;

HWND hwnd;

MSG Msg;

memset(&wc,0,sizeof(wc));

wc.cbSize = sizeof(WNDCLASSEX);

wc.lpfnWndProc = WndProc;

wc.hInstance = hInstance;

wc.hCursor = LoadCursor(hInstance, szCursorName);

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

wc.lpszClassName = "WindowClass";

wc.hIcon = LoadIcon(hInstance, szIconName);

wc.hIconSm = LoadIcon(hInstance, szIconName);

wc.lpszMenuName=szMenu;

if(!RegisterClassEx(&wc)) {

MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);

return 0;

}

hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","Гребенюк ПЗС-1644 лаб_8",WS_VISIBLE|WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, /* x */

CW_USEDEFAULT, /* y */

640, /* width */

480, /* height */

NULL,NULL,hInstance,NULL);

if(hwnd == NULL) {

MessageBox(NULL, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);

return 0;

}

while(GetMessage(&Msg, NULL, 0, 0) > 0) {

TranslateMessage(&Msg);

DispatchMessage(&Msg);

}

return Msg.wParam;

}

«res.rc»

ICON2 ICON "icon7.ico"

CURSOR1 CURSOR "main_cur.cur"

«Таблиця кодів клавіш »

Клавіша

Десяткове число

Шістнадцяткове число

Ідентифікатор

F1

112

0x70

VK_F1

F2

113

0x71

VK_F2

F3

114

0x72

VK_F3

F4

115

0x73

VK_F4

F5

116

0x74

VK_F5

F6

117

0x75

VK_F6

F7

118

0x76

VK_F7

F8

119

0x77

VK_F8

F9

120

0x78

VK_F9

F10

121

0x79

VK_F10

Space

32

0x20

VK_SPACE

BackSpace

8

0x8

VK_BACK

Tab

9

0x9

VK_TAB

Enter

13

0x0D

VK_RETURN

Shift

16

0x10

VK_SHIFT

Ctrl

17

0x11

VK_CONTROL

Alt

18

0x12

VK_MENU

CapsLock

20

0x14

VK_CAPITAL

Esc

27

0x1B

VK_ESCAPE

Insert

45

0x2D

VK_INSERT

PageUp

33

0x21

VK_PRIOR

PageDown

34

0x22

VK_NEXT

End

35

0x23

VK_END

Home

36

0x24

VK_HOME

Вліво ←

37

0x25

VK_LEFT

Вверх ↑

38

0x26

VK_UP

Вправо →

39

0x27

VK_RIGHT

Вниз ↓

40

0x28

VK_DOWN

Delete

46

0x2E

VK_DELETE

PrintScreen

44

0x2C

VK_SNAPSHOT

ScrollLock

145

0x91

VK_SCROLL

0,)

48

0x30

-

1 !

49

0x31

-

2 @

50

0x32

-

3 #

51

0x33

-

4 $

52

0x34

-

5 %

53

0x35

-

6 ^

54

0x36

-

7 &

55

0x37

-

8 *

56

0x38

-

9 (

57

0x39

-

` ~

192

0xC0

-

- _

189

0xBD

-

= +

187

0xBB

-

[ {

219

0xDB

-

] }

221

0xDD

-

; :

186

0xBA

-

' "

222

0xDE

-

\ |

220

0xDC

-

, <

188

0xBC

-

. >

190

0xBE

-

/ ?

191

0xBF

-

a A

65

0x41

-

b B

66

0x42

-

c C

67

0x43

-

d D

68

0x44

-

e E

69

0x45

-

f F

70

0x46

-

g G

71

0x47

-

h H

72

0x48

-

i I

73

0x49

-

j J

74

0x4A

-

k K

75

0x4B

-

l L

76

0x4C

-

m M

77

0x4D

-

n N

78

0x4E

-

o O

79

0x4F

-

p P

80

0x50

-

q Q

81

0x51

-

r R

82

0x52

-

s S

83

0x53

-

t T

84

0x54

-

u U

85

0x55

-

v V

86

0x56

-

w W

87

0x57

-

x X

88

0x58

-

y Y

89

0x59

-

z Z

90

0x5A

-

Win(Л)

91

0x5B

VK_LWIN

Win(Пр)

92

0x5C

VK_RWIN

На правій клавіатурі

0

96

0x60

VK_NUMPAD0

1

97

0x61

VK_NUMPAD1

2

98

0x62

VK_NUMPAD2

3

99

0x63

VK_NUMPAD3

4

100

0x64

VK_NUMPAD4

5

101

0x65

VK_NUMPAD5

6

102

0x66

VK_NUMPAD6

7

103

0x67

VK_NUMPAD7

8

104

0x68

VK_NUMPAD8

9

105

0x69

VK_NUMPAD9

*

106

0x6A

VK_MULTIPLY

+

107

0x6B

VK_ADD

-

108

0x6C

VK_SUBTRACT

.

109

0x6D

VK_DECIMAL

/

110

0x6E

VK_DIVIDE