键盘是计算机的标准配置,正确的指法是微机操作的基础,看着一行行文字轻快地在指下流淌,就仿佛“梵婀岭上奏着的名曲”;
下面我们通过一个例子来学习怎样编写键盘程序:
1、键盘上包括字母键和控制键,标准键盘可以产生255个大小写字母、标点符号的字符代码,称为ASCII码(“阿斯科码”)
这对于英文来说,足以完成大多数文字录入,但是对于成千上万的汉字来说,二百多个是远远不够的,因此汉字用两个ASCII码表示(一个汉字占两个字节),现在汉字编码有GB-2312以及GBK大字符集等等;
2、当我们按下键盘时,首先由键盘检查所按的键,然后发送按键的代码给系统,由于各个国家的键盘代码不同,
系统会把代码转换为标准代码ANSI字符集,还记得WinMain函数中的一句TranslateMessage(&msg)吧,然后再把按键消息发送给应用程序;
3、启动VC,新建一个名为Key的Win32 Application工程,再新建一个相同名称的头文件和源程序文件,在头文件中输入函数的申明,在源程序中输入窗口框架代码;
4、接下来加入键盘消息的处理过程(绿色双斜杠部分是注释),有的一行太长会自动折到下一行,代码如下:
LRESULT APIENTRY MainWndProc(
HWND hWnd,//窗口句柄
UINT uMessage,//消息类型
WPARAM wParam,//消息附带信息
LPARAM lParam)//消息附带信息
{
HDC hdc;//设备描述表句柄
static int i,j;//控制字符显示位置的行,列的坐标
PAINTSTRUCT ps;//包含画图操作各种信息的结构
switch(uMessage)
{
case WM_CHAR://键盘消息
switch (wParam)//键盘字符的ASCII码
{
case 0x0D://回车键的代码
j=j+20;//下一行
i=0;//从行首开始输入
break;
default://默认的处理
InvalidateRect(hWnd,NULL,FALSE);//更新屏幕区域,原来的不擦除
char text[1]={TCHAR(wParam)};//将字符存入数组中,数组有两个字符空间
text[1]='';//第二个字符为结束标志
i=i+10;//下一个字符的位置
hdc=BeginPaint(hWnd,&ps);
TextOut(hdc,20+i,50+j,text,1);//只显示第一个字符,结束标志不显示
EndPaint(hWnd,&ps);
}
break;//字符消息结束
case WM_PAINT://窗口初始化显示一行提示字符串
hdc=BeginPaint(hWnd,&ps);
TextOut(hdc,30,30,"请按键盘输入英文字符:",lstrlen("请按键盘输入英文字符:"));
EndPaint(hWnd,&ps);
break;
case WM_DESTROY: //请求退出窗口和应用程序
PostQuitMessage(0);//发送一条WM_QUIT消息,
break;
default:
return (DefWindowProc(hWnd,uMessage,wParam,lParam));
}
return(0);
}//消息处理函数结束
ASCII码 |
键盘 |
ASCII 码 |
键盘 |
ASCII 码 |
键盘 |
ASCII 码 |
键盘 |
27 |
ESC |
32 |
SPACE |
33 |
! |
34 |
" |
35 |
# |
36 |
$ |
37 |
% |
38 |
& |
39 |
' |
40 |
( |
41 |
) |
42 |
* |
43 |
+ |
44 |
' |
45 |
- |
46 |
. |
47 |
/ |
48 |
0 |
49 |
1 |
50 |
2 |
51 |
3 |
52 |
4 |
53 |
5 |
54 |
6 |
55 |
7 |
56 |
8 |
57 |
9 |
58 |
: |
59 |
; |
60 |
< |
61 |
= |
62 |
> |
63 |
? |
64 |
@ |
65 |
A |
66 |
B |
67 |
C |
68 |
D |
69 |
E |
70 |
F |
71 |
G |
72 |
H |
73 |
I |
74 |
J |
75 |
K |
76 |
L |
77 |
M |
78 |
N |
79 |
O |
80 |
P |
81 |
Q |
82 |
R |
83 |
S |
84 |
T |
85 |
U |
86 |
V |
87 |
W |
88 |
X |
89 |
Y |
90 |
Z |
91 |
[ |
92 |
\ |
93 |
] |
94 |
^ |
95 |
_ |
96 |
` |
97 |
a |
98 |
b |
99 |
c |
100 |
d |
101 |
e |
102 |
f |
103 |
g |
104 |
h |
105 |
i |
106 |
j |
107 |
k |
108 |
l |
109 |
m |
110 |
n |
111 |
o |
112 |
p |
113 |
q |
114 |
r |
115 |
s |
116 |
t |
117 |
u |
118 |
v |
119 |
w |
120 |
x |
121 |
y |
122 |
z |
123 |
{ |
124 |
| |
125 |
} |
126 |
|