江苏网站建站系统平台网站建设shzanen

news/2025/10/4 8:21:05/文章来源:
江苏网站建站系统平台,网站建设shzanen,上海 网站制作,福田蒙派克10座黄牌GetKeyState、GetAsyncKeyState、GetKeyboardState函数的差别#xff1a; 1、BOOL GetKeyboardState( PBYTE lpKeyState );获得全部的256个键#xff08;键盘按键、鼠标按键等等#xff09;的状态#xff0c;lpKeyState是指向一个256bit的数组。存放全部键的状态。 2、SHOR… GetKeyState、GetAsyncKeyState、GetKeyboardState函数的差别 1、BOOL GetKeyboardState( PBYTE lpKeyState );获得全部的256个键键盘按键、鼠标按键等等的状态lpKeyState是指向一个256bit的数组。存放全部键的状态。 2、SHORT GetAsyncKeyState( int vKey );推断Virtual-KeyCodes为vKey的键是否down或up。用返回值的最高位表示键的状态up或down。用返回值的最低位表示vKey键在此函数调用之前是否被按下过。GetAsyncKeyState直接侦測键盘的硬件中断。 3、SHORT GetKeyState( int nVirtKey );用于推断nVirtKey的状态。用返回值的最高位表示。最高位为1表示当前键处于down的状态。最高位为0当前键处于up状态。此函数从消息队列中读取消息进行处理。     以下是转载的内容http://bingtears.iteye.com/blog/663149 0x8000 GetKeyState(VK_SHIFT); 这句是推断是否有按下shift键  为什么GetAsyncKeyState  首先说明有好多程序或书上是0x8000f,这个f不是十六进制的f而是代表浮点数。事实上 8000才是本质。小鱼我整理后自己写了点东西总结一下  首先介绍一下几个概念  按位与运算符是双目运算符其功能是參与运算的两数各相应的二进位相与。仅仅有相应的两个二进位均为1时。结果位才为1 否则为0。參与运算的数以补码方式出现。比如0x11 0x12即0001 0001 0001 0010的结果是0x100001 0000关于vs取反參考附  虚键指的是非字母能够明白表示的键.比如ESC BS TAB NumLock 等,虚键列表见附  物理键状态在操作系统的控制面板中设置鼠标左右键的映射实际的鼠标左键能够映射成右键点击事件或者通过程序也能够这样设置这样就产生了实际的物理键状态  逻辑键状态使用 GetKeyState,GetKeyboardState,等函数得到的逻辑键状态模拟按下按键  GetAsyncKeyState函数功能读取的是物理键状态。也是就是无论你怎么鼠标键盘映射它仅仅读取实际的按键状态。MSDN上给出了样例非常恰当For example, the call GetAsyncKeyState(VK_LBUTTON) always returns the state of the left physical mouse button, regardless of whether it is mapped to the left or right logical mouse button.也就是说假设你又一次设置了映射GetAsyncKeyState还是仅仅读取物理状态。  GetAsyncKeyState的返回值表示两个内容一个是最高位bit的值代表这个键是否被按下。按下为1抬起为0一个是最低位bit的值在windowsCE下要忽略參考自MSDNIf the most significant bit is set, the key is down. The least significant bit is not valid in Windows CE, and should be ignored.  Asynchronous英文意思是异步的  实际其中GetAsyncKeyState的返回值是什么呢小鱼我写了个程序来获取返回值  #include Windows.h  #include stdio.h  void main()  {  while(1)  {  short a ::GetAsyncKeyState(VK_LSHIFT)  printf( 0x%x,a);  sleep(10);  }  }  当然。用MessageBox能够这样写  if(short a ::GetAsyncKeyState(VK_LSHIFT))  {  char buffer[30];  sprintf(buffer, 0x%x,a);  MessageBox(0, buffer, a的值, MB_OK);  }  GetAsyncKeyState按键不按或抬起后不按的返回值0x0        即0000 0000 0000 0000 0000 0000 0000 0000  GetAsyncKeyState按键被按下后的返回值    返回0xffff8001 即1111 1111 1111 1111 1000 0000 0000 0001   (这里并非返回4字节而是%x打印出32位前十六位补f)  0x8000 即0000 0000 0000 0000 1000 0000 0000 0000  GetAsyncKeyState(VK_LSHIFT) 0x8000    返回0x1          即0000 0000 0000 0000 1000 0000 0000 0000  那么为什么GetAsyncKeyState要 ‘与’上 0x8000这个常数呢?  答案是获取按键状态。屏蔽掉其它的可能状态,依照MSDN上说低位should ignore。  网上有人这样写意思非常明白  #define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) 0x8000) ? 1 : 0)  #define KEYUP(vk_code) ((GetAsyncKeyState(vk_code) 0x8000) ? 0 : 1)  程序应该是  if(GetAsyncKeyState(VK_LSHIFT)0x8000)  对于虚键而言以下这样写逻辑是不正确的。尽管结果一样  if(GetAsyncKeyState(VK_LSHIFT))  所以让键盘的上下左右出发事件能够这样写  if( ::GetAsyncKeyState(VK_LEFT) 0x8000 )  code...  if( ::GetAsyncKeyState(VK_RIGHT) 0x8000 )  code...  if( ::GetAsyncKeyState(VK_UP) 0x8000 )  code...  if( ::GetAsyncKeyState(VK_DOWN) 0x8000 )  code...  关于GetAsyncKeyState与GetKeyState差别  GetAsyncKeyState上面已经讲几乎相同了关于GetAsyncKeyState与GetKeyState二者最大差别:GetAsyncKeyState在按键不按的情况下为0而GetKeyState在按键不按的情况下開始为0。当一次‘按下抬起’后变为1依次循环。  SHORT GetKeyState(int nVirtKey   // virtual-key code);  作用返回键的状态按下、释放或锁定down、up or toggled  參数虚拟键代码VK_)。假设是字母a-z、A-Z 或数字0-9 则为其相应的ASCII码比方字母O的ASCII码为十六进制的0x4F  返回值返回码的高位显示当前是否有键被按下低位0位则显示NumLock、CapsLock、ScrollLock的状态ON或OFF为ON时键盘指示灯亮。即高位为1返回值小于0说明有键按下最低位为1表示处于锁定ON状态(參考MSDNIf the high-order bit is 1, the key is down; otherwise, it is up.  If the low-order bit is 1, the key is toggled. A key, such as the CAPS LOCK key, is toggled if it is turned on. The key is off and untoggled if the low-order bit is 0. A toggle keys indicator light (if any) on the keyboard will be on when the key is toggled, and off when the key is untoggled. )  注此函数不应该在键盘消息处理程序以外使用。由于它返回的信息仅仅有在键盘消息从消息队列中被检索到之后才有效。若确实须要。请使用GetAsyncKeyState  ----------------------------------------  网上还找到了一些资料  关于和其它的几个函数的差别  SHORT GetKeyState(int nVirtKey);  SHORT GetAsyncKeyState(int vKey);  BOOL GetKeyboardState(PBYTE lpKeyState);  三个取key status的函数的最大差别是  第一个是从windows消息队列中取得键盘消息返回key status.  第二个是直接侦測键盘的硬件中断返回key status.  第三个是当从windows消息队列中移除键盘消息时才返回key status.  keybd_event函数是模拟键盘击键。一次完整的击键模拟事件是按下和弹起两个消息所以 keybd_event(VK_F12,0,0,0);keybd_event(VK_F12,0,KEYEVENTF_KEYUP,0); 完毕了一次完整的点击 F12 的事件。  GetAsyncKeyState()函数。是直接侦測键盘的硬件中断。有些人说是一种“实时性”的侦測这样的说法感觉不正确。比方你调用 Sleep(),就算是中断一年的时间仅仅要在这期间程序还在执行它都能够把那个键的状态侦測出来。自上一次调用GetAsyncKeyState()函数以来在某些循环中。N次调用GetAsyncKeyState(),它每次检查的都是自上次调用之后。键的状态若键已被按过则返回1否则返回0有些资料显示倘若输入焦点从属于与调用函数的输入线程不同的还有一个线程则返回零比如在还有一个程序拥有输入焦点时应该返回零。实验证明。这样的说法并不全然函数实际是在大部份范围内工作的仅仅有少数是另外。  ---------------  附  VC编译器计算10得出的结果是11。为什么不是5呢  10的二进制表示为1010。按位取反应该为0101。也就是十进制的5为什么会得出11  VC是32位编译器所以  10 00000000 00000000 00000000   00001010  ~10 11111111 11111111   11111111   11110101    -11  能够通过掩码位与 与15位与  15 00000000 00000000 00000000   00001111  ~10 00000000 00000000 00000000   00000101      -11  附  VK_LBUTTON             鼠标左键                      0x01  VK_RBUTTON             鼠标右键                      0x02  VK_CANCEL              Ctrl Break                  0x03  VK_MBUTTON             鼠标中键                      0x04  VK_BACK                Backspace 键       0x08  VK_TAB                 Tab 键                        0x09  VK_RETURN              回车键                        0x0D  VK_SHIFT               Shift 键                      0x10  VK_CONTROL             Ctrl 键                       0x11  VK_MENU                Alt 键                 0x12  VK_PAUSE               Pause 键                      0x13  VK_CAPITAL             Caps Lock 键                  0x14  VK_ESCAPE              Esc 键                        0x1B  VK_SPACE               空格键         0x20  VK_PRIOR               Page Up 键                    0x21  VK_NEXT                Page Down 键                  0x22  VK_END                 End 键                        0x23  VK_HOME                Home 键                       0x24  VK_LEFT                左箭头键                      0x25  VK_UP                  上箭头键                      0x26  VK_RIGHT               右箭头键                      0x27  VK_DOWN                下箭头键                      0x28  VK_SNAPSHOT            Print Screen 键               0x2C  VK_Insert              Insert 键                     0x2D  VK_Delete              Delete 键                     0x2E  0 – 9             数字 0 - 9                    0x30 - 0x39  A – Z             字母 A - Z                    0x41 - 0x5A  VK_LWIN                左WinKey(104键盘才有)         0x5B  VK_RWIN                右WinKey(104键盘才有)         0x5C  VK_APPS                AppsKey(104键盘才有)          0x5D  VK_NUMPAD0            小键盘 0 键                    0x60  VK_NUMPAD1            小键盘 1 键                    0x61  VK_NUMPAD2            小键盘 2 键                    0x62  VK_NUMPAD3            小键盘 3 键                    0x63  VK_NUMPAD4            小键盘 4 键                    0x64  VK_NUMPAD5            小键盘 5 键                    0x65  VK_NUMPAD6            小键盘 6 键                    0x66  VK_NUMPAD7            小键盘 7 键                    0x67  VK_NUMPAD8            小键盘 8 键                    0x68  VK_NUMPAD9            小键盘 9 键                    0x69  VK_F1 - VK_F24        功能键F1 – F24               0x70 - 0x87  VK_NUMLOCK            Num Lock 键                   0x90  VK_SCROLL             Scroll Lock 键                0x91  版权声明本文为博主原创文章未经博主同意不得转载。 转载于:https://www.cnblogs.com/llguanli/p/8427384.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/926922.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

51网站哪里去了哪个网站可以悬赏做图

[css] 如何使用css给一个正方形添加一条对角斜线? background:linear-gradient(45deg,transparent 49.5%,deeppink 49.5%,deeppink 50.5%,transparent 50.5%);个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。…

实用指南:基于Hadoop+Spark的人体体能数据分析与可视化系统开源实现

实用指南:基于Hadoop+Spark的人体体能数据分析与可视化系统开源实现pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &qu…

番禺区网站设计wordpress过去指定分类文章

转变过程 如图,假设将double类型能精确表示的数字落在数轴上,分别是double1、double2、double3。 这个时候,我们有十进制数字a,想要转变成double表示,这个时候得到的是double2,因为double2是距离这个十进制…

基于Hadoop的肾脏疾病风险分析系统架构设计精髓 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

乐之网站制作电影打卡WordPress模板

MFC 中, ListBox 与 ComboBox 中的项在设置了高度的情况下如何实现文本的水平居中与垂直居中???ListBox 与 ComboBox 中的数据均为动态添加文本内容含有数字、英文、中文void CMyComboBox::DrawItem(LPDRAWITEMSTRUCT lpDrawItemS…

实用指南:开源 C# 快速开发(十四)进程--内存映射

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

rqlite 集成sqlite-vec 简单说明

rqlite 集成sqlite-vec 简单说明rqlite 是一个基于raft 的实现的分布式sqlite,sqlite-vec 是可以直接集成rqlite的,核心是sqlite 的插件机制,以下是一个简单试用 环境准备 可以使用docker 或者直接下载二进制包运行…

英语_阅读_Water Sliding_待读

One, two, three... Goooooooh! 一、二、三……出发咯! Slide down the slope. 沿着斜坡滑下去。 Hit the pool with a splash. “扑通”一声掉进泳池。 Water-slides might seem simple. 水滑梯看起来可能很简单。 B…

实用指南:ArcGIS JSAPI 高级教程 - 高亮效果优化之开启使用多高亮样式

实用指南:ArcGIS JSAPI 高级教程 - 高亮效果优化之开启使用多高亮样式pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &…

网站入口自己找网站开发项目

远程手机遥控开关的工作原理主要是通过互联网传递无线信号,控制用电器的一种智能家居产品。 远程手机遥控开关的基本套件包括:手机APP、网线、家用WIFI中转无服务器或者是工厂提供的自带网线端口的中转服务器、连接用电器的接收器。使用时,手…

网站后台代码添加图片wordpress怎么弄

如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效…

手机网站菜单栏怎么做东莞网站建设推广技巧

博主是搞是个FPGA的,一直没有真正的研究过以太网相关的技术,现在终于能静下心学习一下,希望自己能更深入的掌握这项最基本的通信接口技术。下面就开始搞了。 一、OSI参考模型 今天我们先学习一下以太网最基本也是重要的知识——OSI参考模型。…

电商网站界面规范新型建筑模板

SA8000认证流程 SA8000认证流程的第一步是申请组织参加管理体系在线自我评估。Social Fingerprint自我评估可以帮助该组织了解 SA8000管理体系要求并判断是否已做好认证申请准备。当该组织认为其管理实践足够成熟,具备认证条件时,可以从20 多家独立的SAA…

用wang域名做购物网站怎么样网站建设预算策划

http://blog.csdn.net/lu_embedded/article/details/60469851 由于 Linux 所具备的开源、稳定、高效、易裁剪、硬件支持广泛等优点,使得它在嵌入式系统领域最近十几年内迅速崛起。目前嵌入式 Linux 系统开发已经开辟了很大的市场,同时也开发出很多成型的…

const在for用不了

js中关于const在for in或者for of中的使用_for in const-CSDN博客

新闻静态网站模板自建视频网站

🌟博主主页:我是一只海绵派大星 📚专栏分类:软件测试笔记 📚参考教程:黑马教程❤️感谢大家点赞👍收藏⭐评论✍️ 目录 1、操作系统 2、Linux发展历程 3、命令行程序 4、cd 切换文件夹…

苏州做网站优化社交电商系统开发

引言 原文链接 近日,一场由微软视窗系统软件更新引发的全球性"微软蓝屏"事件震惊了整个科技界。这次事件源于美国电脑安全技术公司"众击"提供的一个带有"缺陷"的软件更新,如同一颗隐形炸弹在全球范围内引爆,…

网站开发毕业设计摘要范文剪辑师培训班有用吗

IIS-HTTPS(TSL)强制开启的方法和解决过时的安全问题 系统为:Windows server 2008R2 工具为:IIS6 数据库为: Windows Sql server 2014 证书为:腾讯云颁发的AC证书 首先你需要这几个工具 IISCrypto | 检测和为你配置最安全的 策略环境 手写reg注册表 | 来关闭本地的事件 Windo…

有做外贸的平台网站吗永城网站建设

鸿蒙是面向5G物联网、面向全场景的分布式操作系统,其不是安卓系统的分支或修改而来的,与安卓、iOS是不一样的操作系统。鸿蒙将打通手机、电脑、平板、电视、电器设备、工业自动化控制、无人驾驶、车机设备 、智能穿戴统一成一个操作系统,并且…

需要锦州网站建设自己电脑wordpress

数据对齐 数据对齐是一种计算机内存管理技术,确保数据存储在内存中的特定地址上,以提高访问效率和性能。 不同的数据类型(如整数、浮点数、指针等)在内存中的存储位置通常需要满足特定的边界要求,即数据的起始地址是其…