Лабораторна робота 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 |
