ImageVerifierCode 换一换
格式:DOCX , 页数:35 ,大小:58.85KB ,
资源ID:2832392      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2832392.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Windows Api教案5.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Windows Api教案5.docx

1、Windows Api教案5第五章 键 盘一 键盘基础 扫描码当每按下一个键或者释放一个键,键盘设备就产生一个扫描码,这些扫描码可以唯一地确定相应的键。每个键可以产生两个不同的扫描码,当键按下时,产生的扫描码最高有效位为0,当键释放时,产生的扫描码最高有效位为1。譬如,Esc的扫描码为1,数字键1、2、3的扫描码为2、3、4等。 虚拟键盘为了提供与设备无关的键盘操作,Windows定义了一个虚拟键盘。虚拟键盘不但包括了目前键盘所用的标准键集,还定义了一些目前键盘上没有的虚拟键,以便将来进行适当的扩充。由Windows通过键盘驱动程序将各种不同的物理键盘映射到同一个虚拟键盘上,而应用程序只需处理

2、这唯一的虚拟键盘的输入即可。 虚拟键表下表列出了绝大多数Windows定义的虚拟键的键码,这些虚拟键均带有前缀VK_。虚拟键表十进制值十六进制值Windows中定义的标识符IBM PC键盘中相应的键是否必须101VK_LBUTTON鼠标左键否202VK_RBUTTON鼠标右键否303VK_CANCELCtrl-Break是404VK_MBUTTON鼠标中键否808VK_BACKBackspace是909VK_TABTab是120CVK_CLEARNum Lock关闭时数字键盘5否130DVK_RETURNEnter是1610VK_SHIFTShift是1711VK_CONTROLCtrl是18

3、12VK_MENUAlt是1913VK_PAUSEPause否2014VK_CAPTIALCaps Lock是271BVK_ESCAPEEsc是3220VK_SPACESpacebar是3321VK_PRIORPage Up是3422VK_NEXTPage Down 是3523VK_ENDEnd是3624VK_HOMEHome是3725VK_LEFTLeft Arrow是3826VK_UPUp Arrow是3927VK_RIGHTRight Arrow是4028VK_DOWNDown Arrow是4129VK_SELECT否422AVK_PRINT否432BVK_EXECUTE否442CVK_

4、SNAPSHOTPrint Screen否452DVK_INSERTInsert是462EVK_DELETEDelete是472FVK_HELP否48573039N/A主键盘上的09是6590415AN/AAZ是915BVK_LWIN左Windows键否925CVK_RWIN右Windows键否935DVK_APPSApplications键否961056069VK_NUMPAD0VK_NUMPAD9Num Lock打开时数字键盘上的09否1066AVK_MULTIPLY数字键盘上的*键否1076BVK_ADD数字键盘上的+键否1086CVK_SEPARATER否1096DVK_SUBTRAC

5、T数字键盘上的键否1106EVK_DECIMAL数字键盘上的键否1116FVK_DIVIDE数字键盘上的 / 键否1121217079VK_F1VK_F10功能键F1F10是1221357A87VK_F11VK_F24功能键F11F24否14490VK_NUMLOCKNum Lock否15591VK_SCROLLScroll Lock否二 键盘消息Windows中的键盘消息分为两大类,即击键消息和字符消息。对于键盘上的所有键,每次按下或者释放时,都会产生击键消息。但是,只有那些产生可显示字符或控制字符的键,才会产生字符消息。对于产生可显示字符或者控制字符的击键或击键组合,Widows不仅向应用

6、程序发送击键消息,而且还发送字符消息。对于不产生可显示字符或控制字符的键,系统只发送击键消息而不发送字符消息。 击键消息 分类WM_KEYDOWN、 WM_KEYUP、WM_SYSKEYDOWN、WM_SYSKEYUP。在通常情况下,按下键和释放键消息是成对出现的。如果按住一个键不放达到一定时间,会激活系统自动重复功能,在这种情况下,当该键最终被释放的时候,系统会给相应的窗口过程发送一系列WM_KEYDOWN(或WM_SYSKEYDOWN)消息和一个WM_KEYUP(或WM_SYSKEYUP)消息。 系统击键消息该类型消息通常由含有Alt键的击键组合产生,用于快速激活菜单及菜单中的选项、切换当

7、前窗口和其他系统操作。这些消息通常由系统处理,应用程序通常忽略系统击键消息,而由窗口函数将这些消息交由系统默认处理函数DefWindowProc去处理。 击键消息参数参数wParam中是虚拟键代码,用于指定所按下或者释放的键。参数lParam包含了与击键消息相关的其他有用信息。LParam的32位共分为6个部分,见下图:313029242316150说明: 重复次数 重复次数表示该消息代表的击键次数。在通常情况下,重复次数的值为1。如果按住一个键不放,则系统将自动重复产生该键的击键消息WM_KEYDOWN(或WM_SYSKEYDOWN)。当Windows向消息队列里放置一条WM_KEYDOWN

8、消息(或WM_SYSKEYDOWN消息)时,如果在此之前已经存在相同的击键消息,则系统将相同的消息合并为一条,而将该击键消息的重复计数值加1。如果重复计数的值大于1,则表明击键的速度大于窗口函数处理键盘消息的速度,此时,窗口函数把WM_KEYDOWN消息看作重复消息。窗口函数可以根据需要忽略重复计数而将其视为一次击键,或者根据重复计数的值将其作为多次击键来处理。WM_KEYUP和WM_SYSKEYUP消息的重复计数始终为1。 OEM扫描码OEM扫描码由键盘硬件产生。 扩展键标志该标志仅一位,用来指示按下或释放的键是否为IBM扩展键盘上的键,这些键包括扩展键盘顶部的功能键、非数字键盘上的光标移动

9、键、Insert和Delete等特殊功能键、NumLock键、数字键盘上的“/”键和回车键,以及右Alt键和右Ctrl键等。如果是扩展键,在该位为1,否则为0。在通常情况下,应用程序忽略该标志位。 Alt键标志Alt键标志只有一位,用来指示该键是否与Alt键同时被按下。如果是,则该位为1,否则为0。 先前状态标志该标志也仅一位,用以标识键的先前状态。如果该键先前被按下,则该位为1,否则为0。 过渡状态标志如果键正被按下,则该位为0;如果键正被释放,则该位为1。 GetKeyState函数 SHORT GetKeyState( int iVirtKey / virtual-key code );

10、说明:其中,唯一的参数iVirtKey用于指定需要检查状态的键,该函数通过将返回的短整数的不同位设置为不同的值,来指示各种不同的按键情况。例如:nState=GetKeyState(VK_SHIFT); 这时可检查nState的最高位是否为1来判断Shift键的状态。 nState=GetKeyState(VK_CAPTIAL); 这时可检查nState的最低位是否为1来判断CapsLock键的状态。 GetAsyncKeyState函数 SHORT GetAsyncKeyState( int vKey / virtual-key code );说明:该函数与GetKeyState的返回值含义

11、是相同的。两者的不同之处在于,函数GetKeyState获取的是击键消息产生时指定键的状态,而函数GetAscyncKeyState获取的是执行该语句时指定键的当前状态。 字符消息对于那些产生可显示字符的操作,Windows还会向窗口函数发送字符消息。字符消息不是由硬件产生的,而是由击键消息转换而来的。即由消息循环代码完成的。while(GetMessage(&msg,NULL,0,0) TranslateMessage(&msg); DispatchMessage(&msg);TranslateMessage函数从WM_KEYDOWN或WM_SYSKEYDOWN击键消息中取得虚拟键码,如果相

12、应的击键操作产生可显示字符,则TranslateMessage把相应的字符消息放入消息队列中,在紧随其后的下一个消息循环中,该字符消息被取出并发往相应的窗口函数。 分类WM_CHAR、WM_DEADCHAR、WM_SYSCHAR、WM_SYSDEADCHAR。前两种由WM_KEYDOWN转换而来,后两种由WM_SYSKEYDOWN转换而来。在某些非英语的键盘上,有些键用于给字母加音标。由于它们本身并不产生字符,所以称为“死键”。一般不处理。 参数字符消息的lParam参数与相应的击键消息的lParam参数意义相同,但wParam参数不再是虚拟键码,而是字符代码。例如:按下并释放Shift键消息

13、表消 息键 或 代 码WM_KEYDOWN虚拟键码VK_SHIFT(0x10)WM_KEYUP虚拟键码VK_SHIFT(0x10)按下并释放A键消息表消 息键 或 代 码WM_KEYDOWN“A”的虚拟键码(0x41)WM_CHAR“a”的字符代码(0x61)WM_KEYUP“A”的虚拟键码(0x41)按下Shift键同时按下大写A键,并同时释放的消息表消 息键 或 代 码WM_KEYDOWN虚拟键码VK_SHIFT(0x10)WM_KEYDOWN“A”的虚拟键码(0x41)WM_CHAR“A”的字符代码(0x41)WM_KEYUP“A”的虚拟键码(0x41)WM_KEYUP虚拟键码VK_SHIFT(0x10) KEYVIEW1程序/*- KEYVIEW1.C - Displays Keyboard and Character Messages (c) Charles Petzold, 1998 -*/#include LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;i

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1