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

MapVirtualKey

函数功能:该函数将一虚拟键码翻译(映射)成一扫描码或一字符值,或者将一扫描码翻译成一虚拟键码

函数原型:UINT MapVirtualKey(UINT uCode,UINT uMapType)

语法

UINT WINAPI MapVirtualKey(
  _In_  UINT uCode,
  _In_  UINT uMapType
);

参数

uCode:定义一个键的扫描码或虚拟键码。该值如何解释依赖于uMapType参数的值。

uMapType:定义将要执行的翻译。该参数的值依赖于uCode参数的值。取值如下:

MAPVK_VK_TO_VSC(0:代表uCode是一虚拟键码且被翻译为一扫描码。若一虚拟键码不区分左右,则返回左键的扫描码。若未进行翻译,则函数返回0。

MAPVK_VSC_TO_VK(1)uCode参数是一个扫描码,被翻译成一个不区分左右键的虚拟键码。如果没有翻译,该函数返回 0。

MAPVK_VK_TO_CHAR(2)uCode参数是一个虚拟键码,在返回值的低位字中被翻译成一个未移位的字符值。通过设置返回值的最高位来指示死键(变音符号)。如果没有翻译,该函数返回 0。

MAPVK_VSC_TO_VK_EX(3):代表uCode为一扫描码且被翻译为区分左右键的虚拟键码。若未进行翻译,则函数返回0。

MAPVK_VK_TO_VSC_EX(4):Windows Vista 及更高版本: uCode参数是一个虚拟键码,并被转换为扫描码。如果是不区分左右键的虚拟键码,则返回左键扫码。如果扫描码是扩展扫描码,则uCode值的高字节可以包含0xe0或0xe1来指定扩展扫描码。如果没有翻译,该函数返回 0。

返回值:返回值可以是一扫描码,或一虚拟键码,或一字符值,这完全依赖于不同的uCode和uMapType的值。若未进行翻译,则函数返回0。

注意事项

应用程序可以使用MapVirtualKey将扫描码转换为虚拟键码常量VK_SHIFT(shift键)VK_CONTROL(ctrl键)VK_MENU(alt键),反之亦然。这些翻译不区分 SHIFT、CTRL 或 ALT 键的左右实例。应用程序可以通过调用MapVirtualKey函数时将uCode参数

应用程序可以通过调用MapVirtualKey并将uCode设置为以下虚拟键代码常量之一来获取与这些键之一的左侧或右侧实例对应的扫描代码:

  • VK_LSHIFT
  • VK_RSHIFT
  • VK_LCONTROL
  • VK_RCONTROL
  • VK_LMENU
  • VK_RMENU

应用程序只能通过GetKeyboardState、SetKeyboardState、GetAsyncKeyState、GetKeyState、MapVirtualKey和MapVirtualKeyEx函数使用这些左右区分常量。有关虚拟键码的完整列表,请参阅虚拟键码。

Windows CE:Windows CE仅支持uMapType参数取值为2的情况,即将虚拟键映射为未被移位的字符。

速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.O及以L版本;头文件:winuser.h;库文件:user32.lib;在Windows NT上实现为Unicode和ANSI两种版本。

相关文章:

  • 键盘扫描码与虚拟码的关系
  • 事件和消息的区别
  • 虚拟键码是什么
  • sikuli
  • OCR-光学符号识别
  • HTML DOCTYPE 声明
  • 图像四种基本类型简介
  • 常见图像格式清晰度对比
  • netsh命令
  • 系统检测到在一个调用中尝试使用指针参数时的无效指针地址
  • 微软带头打了30年,这场屏幕里的大乱斗,终于要结束了
  • 使用socket函数的一些常见错误
  • 数据链路层协议(Ethernet、IEEE802.3、PPP、HDLC)
  • IP协议详解
  • TCP协议
  • 【5+】跨webview多页面 触发事件(二)
  • CSS实用技巧干货
  • CSS中外联样式表代表的含义
  • django开发-定时任务的使用
  • ECS应用管理最佳实践
  • emacs初体验
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • js如何打印object对象
  • Lsb图片隐写
  • Redis的resp协议
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • underscore源码剖析之整体架构
  • 如何胜任知名企业的商业数据分析师?
  • 使用SAX解析XML
  • 跳前端坑前,先看看这个!!
  • 通过几道题目学习二叉搜索树
  • 协程
  • 主流的CSS水平和垂直居中技术大全
  • Hibernate主键生成策略及选择
  • #define 用法
  • #单片机(TB6600驱动42步进电机)
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • $.ajax()参数及用法
  • (10)ATF MMU转换表
  • (Java)【深基9.例1】选举学生会
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (算法)N皇后问题
  • (译)计算距离、方位和更多经纬度之间的点
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)树状数组
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .describe() python_Python-Win32com-Excel
  • .NET 分布式技术比较
  • .NET 事件模型教程(二)
  • .net程序集学习心得
  • .NET分布式缓存Memcached从入门到实战
  • [Android Pro] Notification的使用