当前位置: 首页 > wzjs >正文

贵阳网站建设咨询微盟商户助手app下载

贵阳网站建设咨询,微盟商户助手app下载,做网站从何开始,建设网络强国征文书籍:《Visual C 2017从入门到精通》的2.4.2 MFC应用程序类型 环境:visual studio 2022 内容:【例2.40】通过按键消息显示用户按键的键值 说明:以下内容大部分来自腾讯元宝 GetKeyState() 和 GetAsyncKeyState() 是 Windows AP…

书籍:《Visual C++ 2017从入门到精通》的2.4.2 MFC应用程序类型

环境:visual studio 2022

内容:【例2.40】通过按键消息显示用户按键的键值

说明:以下内容大部分来自腾讯元宝

GetKeyState() 和 GetAsyncKeyState() 是 Windows API 中用于检测按键状态的常用函数,其核心差异如下:


1. 工作机制

  • GetKeyState()
    基于 ​消息队列 获取按键状态,仅反映 ​最后一次键盘消息处理时的按键状态。例如,在 WM_KEYDOWN 消息处理函数中调用时,它返回生成该消息时的按键状态。

    适用场景:需要在消息处理逻辑中同步获取按键状态(如响应快捷键)。
  • GetAsyncKeyState()
    直接查询 ​硬件硬件中断 实时获取按键状态,不受消息队列影响。无论程序是否处于消息处理阶段,调用时立即返回当前按键状态。

    适用场景:需要实时检测按键(如游戏循环、后台监控)。

2. 返回值结构

  • GetKeyState()
    返回 SHORT 类型(16位),​最高位(第15位)​ 表示按键是否被按下(1=按下,0=抬起),​最低位(第0位)​ 表示按键是否被触发(如 Caps Lock 灯状态)。

    判断按键按下
    if (GetKeyState(VK_CONTROL) & 0x8000)  // 最高位为1表示按下
  • GetAsyncKeyState()
    返回 SHORT 类型,​最高位 表示当前按键是否被按下,​最低位 表示自上次调用后是否被触发过(1=触发过)。

    判断按键按下
    if (GetAsyncKeyState(VK_SPACE) & 0x8000)  // 最高位为1表示按下

3. 使用限制与性能

  • GetKeyState()

    • 只能在消息处理函数中使用,否则无法获取有效状态。
    • 性能较高,适合频繁调用(如每帧检测)。
    • 潜在陷阱:若在循环中直接使用(如 while(GetKeyState(...))),可能导致死循环。
  • GetAsyncKeyState()

    • 无消息队列依赖可在任意位置调用
    • 性能较低,频繁调用可能影响性能。
    • 物理按键检测:不受键盘映射影响(如 VK_LBUTTON 始终检测鼠标左键)。

4. 典型场景对比

场景推荐函数示例代码
响应快捷键(如 Ctrl+S)GetKeyState()if (GetKeyState(VK_CONTROL) & 0x8000 && nChar == 'S')
游戏循环实时检测按键GetAsyncKeyState()if (GetAsyncKeyState(VK_SPACE) & 0x8000)
检测物理按键状态(如外接键盘)GetAsyncKeyState()if (GetAsyncKeyState(VK_NUMPAD0) & 0x8000)

5. 注意事项

  • 组合键处理
    使用 GetKeyState() 时,需确保组合键(如 Ctrl+Alt+Delete)在消息队列中同时触发。
  • 多线程环境
    GetAsyncKeyState() 可跨线程检测按键,但需注意焦点窗口问题(若其他窗口拥有焦点,可能返回 0)。
  • Unicode 兼容性
    两者均支持 Unicode 编码的虚拟键码(如 VK_RETURN 对应回车键)。

总结

维度GetKeyState()GetAsyncKeyState()
数据来源消息队列硬件中断
实时性非实时(依赖消息处理)实时(调用即返回)
性能较低
适用场景消息驱动的按键响应需要实时检测的复杂场景(如游戏、后台监控)

通过合理选择函数,可优化程序响应速度与逻辑准确性。若需进一步了解虚拟键码列表,可参考微软官方网页。


文章转载自:

http://I4DWZW34.bxsgL.cn
http://WbR50EPG.bxsgL.cn
http://f8aVBwP0.bxsgL.cn
http://40oeiURD.bxsgL.cn
http://kwUcn74j.bxsgL.cn
http://nbQk2ajL.bxsgL.cn
http://idR6RQs7.bxsgL.cn
http://keZHb2JJ.bxsgL.cn
http://JIQFFbVX.bxsgL.cn
http://2YdKwJkp.bxsgL.cn
http://JT6BMZLI.bxsgL.cn
http://IiY2XvMA.bxsgL.cn
http://mjnzf9Bc.bxsgL.cn
http://H8A5DyrY.bxsgL.cn
http://JJgorLOI.bxsgL.cn
http://Jw0uM6Mx.bxsgL.cn
http://3Fkk5wR5.bxsgL.cn
http://qWb1YqsN.bxsgL.cn
http://GqJn2pKX.bxsgL.cn
http://jE2J97kN.bxsgL.cn
http://QUBceBvA.bxsgL.cn
http://Dk2YwbGJ.bxsgL.cn
http://c5DNCMsi.bxsgL.cn
http://rsJY5DSz.bxsgL.cn
http://qpBuTc11.bxsgL.cn
http://YRxUw9vY.bxsgL.cn
http://4rO5ExpO.bxsgL.cn
http://TUKdcndq.bxsgL.cn
http://gB9x6m6k.bxsgL.cn
http://460fAUlQ.bxsgL.cn
http://www.dtcms.com/wzjs/647330.html

相关文章:

  • 网站seo自己怎么做巡视组 住房与城乡建设部网站
  • 珠海美容网站建设软文网官网
  • 南沙区交通和建设局网站互联网架构师
  • wordpress建站位置福州网站建设的公司
  • 1.简述网站建设流程工商注册号查询入口
  • 网站不收录是什么原因wordpress中数据库配置文件
  • 找施工队伍去什么网站国内优秀企业网站欣赏
  • 苏州哪里做网站手机大型网站
  • asp.net+网站开发+实战怎么免费创建自己的网站平台
  • 网站页面的宽度郑州装修设计公司
  • 网站查询功能是用什么程序做的传媒公司取名字
  • 悬赏做logo的网站重庆网站界面设计
  • 石家庄最好的网站建设公司排名广告设计学什么内容
  • 银州手机网站建设网站建设综合实训总结与体会
  • 网站建设涉及的法律做竞价网站要准备什么条件
  • 网站建设 经典书籍优惠的网站快排公司电话
  • 烟台营销型网站建设成品网站灬源码1688
  • 做药的常用网站gta5办公室网站正在建设
  • 谁能给个网站谢谢合肥seo报价
  • 买卖域名哪个网站好中国大工程建设需要什么样的人才
  • 怎么做网站后门wordpress文章添加动态数据
  • 企业网站策划书天津做网站建设的公司
  • 网站开发进度安排文档公司官网站怎么搞
  • 厂房外墙设计效果图聊城seo整站优化报价
  • 景征网站建设深圳市建设集团有限公司详细地址
  • 中小企业网站建设 网络营销怎么生成网页链接
  • 大连高新区规划建设局网站顺企网app下载
  • 做微商的网站公司推广业务哪个平台好
  • 局域网内网站建设2024网站推广
  • 平面网站模版网站开发seo要求