C++应用程序如何响应键盘消息

C++应用程序如何响应键盘消息,第1张

在microsoft

windows

中,键盘和鼠标是两个标准的用户输入源,在一些交叠的 *** 作中通常相互补充使用。当然,鼠标在今天的应用程序中比10年前使用得更为广泛。甚至在一些应用程序中,我们更习惯于使用鼠标,例如在游戏、画图程序、音乐程序,以及web创览器等程序中就是这样。然而,我们可以不使用鼠标,但绝对不能从一般的pc中拆掉键盘。

相对于个人计算机的其他组件,键盘有非常久远的历史,它起源于1874年的第一台remington打字机。早期饥渗搜的计算机程序员用键盘在hollerith卡片上打孔,以后在哑终端上用键盘直接与大型主机通讯。pc上的键盘在某些方面进行了扩展,包括了功能键、光标定位键和(通常都带有的)单独的数字键盘,但它们的输入原理基本相同。

键盘基础

windows程序获得键盘输入的方式:键盘输入以消息的形式传递给程序的窗口过程。实际上,第一次学习消息时,键盘就是一个明显的例子:消息应该传递给应用程序的信息类型。

windows用8种不同的消息来传递不同的键盘事件。这好像太多了,但是(就像我们所看到的一样)程序可以忽略其中至少一半的消息而不会有任何问题。并且,在大多数情况下,这些消息中包含的键盘信息会多于程烂历序所需要的。处理键盘的部分工作就是识别出哪些消息是重要的,哪些是不重要的。

一、键盘基础知识

虽然应用程序在很多情况下可以通过鼠标实现信息的输入,但到现在为止键盘仍然是pc机中不可替代的重要输入设备。

用键盘当作输入设备,每当用户按下或释放某一个键时,会产生一个中断,该中断激活键盘驱动程序keyboard.drv来对键盘中断进行处理。keyboard.drv程序会根据用户的不同 *** 作进行编码,然后调用windows用户模块user.exe生成键盘消息喊李,并将该消息发送到消息队列中等候处理。

1.扫描码和虚拟码

扫描码对应着键盘上的不同键,每一个键被按下或释放时,都会产生一个唯一的扫描码作为本身的标识。扫描码依赖于具体的硬件设备,即当相同的键被按下或释放时,在不同的机器上可能产生不同的扫描码。在程序中通常使用由windows系统定义的与具体设备无关的虚拟码。在击键产生扫描码的同时,键盘驱动程序keyboard.drv截取键的扫描码,然后将其翻译成对应的虚拟码,再将扫描码和虚拟码一齐编码形成键盘消息。所以,最后发送到消息队列的键盘消息中,既包含了扫描码又包含了虚拟码。

经常使用的虚拟码在windows.h文件中定义,常用虚拟码的数值、常量符号和含义如表所示。

取值(16进制)

常量符号

含义

01

vk_lbutton

鼠标左键

02

vk_rbutton

鼠标右键

03

vk_cancel

break中断键

04

vk_mbutton

鼠标中键

05-07

--

未定义

08

vk_back

(backspace)键

09

vk_tab

tab键

0a-0b

--

未定义

0c

vk_clear

clear键

0d

vk_return

enter键

0e-0f

--

未定义

10

vk_shift

shift键

11

vk_control

ctrl键

12

vk_menu

alt键

13

vk_pause

pause键

14

vk_captial

capslock键

15-19

--

汉字系统保留

1a

--

未定义

1b

vk_escape

esc键

1c-1f

--

汉字系统保留

20

vk_space

空格键

21

vk_prior

pageup键

22

vk_next

pagedown键

23

vk_end

end键

24

vk_home

home键

25

vk_left

←(left

arrow)键

26

vk_up

↑(up

arrow)键

27

vk_right

→(right

arrow)键

28

vk_down

↓(down

arrow)键

29

vk_select

select键

2a

--

oem保留

2b

vk_execute

execute键

2c

vk_snapshot

print

screen键

2d

vk_insert

insert键

2e

vk_delete

delete键

2f

vk_help

help键

30-39

vk_0-vk_9

数字键0-9

3a-40

--

未定义

41-5a

vk_a-vk_z

字母键a-z

5b-5f

--

未定义

60-69

vk_numpad0-vk_numpad9

小键盘数字键0-9

6a

vk_multiply

*(乘号)键

6b

vk_add

+(加号)键

6c

vk_sepapator

分隔符键

6e

vk_subtract

-(减号)键

6f

vk_decimal

.(小数点)键

70-87

vk_divide

/(除号)键

88-8f

vk_f1-vk_f24

f1-f24功能键

90

vk_numberlock

number

lock键

91

vk_scroll

scroll

lock键

92-b9

--

未定义

ba-c0

--

oem保留

c1-da

--

未定义

db_e4

--

oem保留

e5

--

未定义

e6

--

oem保留

e7-e8

--

未定义

e9-f5

--

oem保留

f6-fe

--

未定义

输出,输扒虚薯入,复位。

1、单片系统的键盘程序包括输出,由键盘进行敲击字母输出。

2、输入是通过打完的字通过显示器进誉搭行输入。

3、复位是将春者错误的地方进行删除复位。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12416218.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存