关于键盘

1.windows会把这些键盘快捷键转换为菜单命令消息,你不必自己去做转换。

2.当对话框活跃时,程序不必监控键盘,windows会监控键盘,接着会将击键效果传送给程序,windows处理所有的编辑控件逻辑。

3.具有输入焦点的窗口要么是活动窗口要么是活动窗口的子窗口。窗口过程可以通过WM_SETFOCUS和WM_KILLFOCUS来确定自己的窗口是否有输入焦点。WM_SETFOCUS表明窗口具有输入焦点,WM_KILLFOCUS表明窗口正在失去焦点

4.当用户按下或者释放键盘上一个键时,windows和键盘设备驱动程序将硬件扫描码转换成格式化以后的消息,然后将这些消息放入系统消息队列,然后再将这些消息放入对应窗口的消息队列中,这样做的原因是:有时用户输入的速度可能快于应用成处理的速度,特殊的击键可能将输入焦点从一个窗口转换到另一个窗口,如果已经将消息放入了程序的消息队列中,则他们不能输入到另一个窗口了。

5.对于产生可显示字符的击键组合,windows在发送击键消息的同时还发送字符消息,但有些键不产生字符,如shift键等,则windows值产生击键消息。

6.系统击键可非系统击键,WM_SYSKEYDOWN和WM_SYSKEYDOWN表示这类击键消息对于windows比应用程序更加的重要,windows将会把这类消息转换成菜单消息,发送给窗口过程,一下代码:

case WM_SYSKEYDOWN:

case WM_SYSKEYUP:

case WM_SYSKEYCHAR:

return 0;

这样的活就会阻止所有的关于alt键的操作,这样就显示了窗口过程的强大。对于不予alt组合的击键,产生地WM_KEYDOWN和WM_KEYUP应用程序可以使用或者丢弃这些消息,对于这四种击键消息,wParam是虚拟键代码,用来表示哪个键按下或者释放,而lParam包含击键的一些其他数据。

7.虚拟键代码,真实的键码有键盘产生,windows文件称它们为扫描码,如果试图使用u设备无关的方式来处理键盘,就需要使用虚拟键代码,虚拟键代码以VK_开头,每个代码对应这IBM中键

8.lparam参数,有以下几个部分组成,重复计数,OEM扫描码,扩展键标记,内容代码,键的先前状态,转换状态

9.转义状态:当处理击键消息时,可能需要知道是否有转义键,或者切换键,你要通过调用GetKetState函数获得此消息,并非实时的检查键盘的状态,包含了正在处理的当前消息。如:当你在处理Tab消息时,可以调用含VK_SHIFT参数的GetKeyState函数,可以判段是否按下了shift按键。

10.使用击键消息,windows程序通常为不产生击键使用WM_KEYDOWN消息,尽管可以有可能通过击键消息和转义状态信息,把击键消息转换为字符,但不要这么做,因为会存在二义性。在不同国家的键盘上会有不同的显示字符,对光标移动键,功能键,Insert键和Detete键,WM_KEYDOWN是最有用的,但Insert键,Delete和功能键经常使用为菜单快捷键,windows将会将其转换为菜单命令消息,应用程序不必自己处理这些消息。

11.如何在程序中加上键盘接口

简单的把一个WM_KEYDOWN消息转换为等同的WM_VSCROLL和WM_HSCROLL消息,然后我们可以通过给窗口过程发送假冒的消息,使用SendMessage函数即可。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值