设为首页 加入收藏

TOP

键盘(十三)
2010-12-30 21:11:33 来源: 作者: 【 】 浏览:32451
Tags:键盘

GetKeyState不会让您获得独立於普通键盘讯息的键盘资讯。例如,您或许想暂停视窗讯息处理程式的处理,直到您按下F1功能键为止:

不要这么做!这将让程式当死(除非在执行此叙述之前早就从讯息伫列中接收到了F1的WM_KEYDOWN)。如果您确实需要知道目前某键的状态,那么您可以使用GetAsyncKeyState。

使用按键讯息
 

如果程式能够获得每个按键的资讯,这当然很理想,但是大多数Windows程式忽略了几乎所有的按键,而只处理部分的按键讯息。WM_SYSKEYDOWN和WM_SYSKEYUP讯息是由Windows系统函式使用的,您不必为此费心,就算您要处理WM_KEYDOWN讯息,通常也可以忽略WM_KEYUP讯息。

Windows程式通常为不产生字元的按键使用WM_KEYDOWN讯息。虽然您可能认为借助按键讯息和位移键状态资讯能将按键讯息转换为字元讯息,但是不要这么做,因为您将遇到国际键盘间的差异所带来的问题。例如,如果您得到wParam等於0x33的WM_KEYDOWN讯息,您就可以知道使用者按下了键3,到此为止一切正常。这时,如果用GetKeyState发现Shift键被按下,您就可能会认为使用者输入了#号,这可不一定。比如英国使用者就是在输入£。

对於游标移动键、功能键、Insert和Delete键,WM_KEYDOWN讯息是最有用的。不过, Insert、Delete和功能键经常作为功能表加速键。因为Windows能把功能表加速键翻译为功能表命令讯息,所以您就不必自己来处理按键。

在Windows之前的MS-DOS应用程式中大量使用功能键与Shift、Ctrl和Alt键的组合,同样地,您也可以在Windows程式中使用(实际上,Microsoft Word将大量的功能键用作命令快捷方式),但并不推荐这样做。如果您确实希望使用功能键,那么这些键应该是重复功能表命令。Windows的目标之一就是提供不需要记忆或者使用复杂命令流程的使用者介面。

因此,可以归纳如下:多数情况下,您将只为游标移动键(有时也为Insert和Delete键)处理WM_KEYDOWN讯息。在使用这些键的时候,您可以通过GetKeyState来检查Shift键和Ctrl键的状

首页 上一页 10 11 12 13 14 15 16 下一页 尾页 13/61/61
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇滑鼠 下一篇图形基础

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: