windows 系统消息之WM_KEYDOWN

摘要:
非系统密钥不与ALT一起使用。语法WM_KEYDOWNWRAMwParamLPARAMLParam;参数wParam指定非系统密钥的虚拟密钥代码。该值表示用户持续按下键盘键时的键击次数。如果密钥足够长,将发送多条消息。但是,重复次数不会累积。29指定上下文代码,对于WM_KEYDOWN消息,值总是0.30,以指定上一个键状态。当DefWindowProc函数接收WM_发送KEYUP消息时,该函数检查是否设置了内部标识符。如果已设置,WM将被发送_ SYSCOMMAND消息到顶层窗口。由于自动重复的特性,在WM_发送KEYUP消息之前可能会有多个WM_KEYDOWN消息发送。
WM_KEYDOWN Notification

当一个非系统键被按下时该消息发送给具有键盘焦点的窗口。非系统键即不与ALT联用的情况。

语法

WM_KEYDOWN

WPARAM wParam
LPARAM lParam;

参数

wParam

指定非系统键的虚拟键码。

lParam

指定重复次数,扫描码,扩展键标识符,上下文代码,前一键状态标识符,以及转换状态标识符。它们如下所示:

0-15

指定当前消息重复的次数。该值代表按键敲击的次数,就如同用户一直按下键盘按键一样。如果按键足够长,会发送多个消息。然而,重复次数不进行累加。

16-23

指定扫描码。该值取决于OEM。

24

指定键是否为扩展键,就如同101或102键盘内的右手的ATL和CTRL键。如果是一个扩展键,则该值是1,否则,它是0.

25-28

保留,未使用。

29

指定上下文代码,对于WM_KEYDOWN消息,该值总是0.

30

指定之前的键状态。如果在消息发送之前,键被按下,则该值是1,否则该值是0.

31

指定转换状态。对于WM_KEYDOWN消息,该值总是0.

返回值

应用程序如果处理了改消息,则返回值是0.

备注

如果F10被按下,DefWindowProc函数发送一个内部标识符。当DefWindowProc函数接收WM_KEYUP消息时,函数检查内部标识符是否被设置,如果设置的话,将发送WM_SYSCOMMAND消息给顶层窗口。消息的WM_SYSCOMMAND参数会被设置为SC_KEYMENU。

由于自动重复的特性,在WM_KEYUP消息发送之前也许会有多个WM_KEYDOWN消息发送。之前的键状态(30)可以被用来判断WM_KEYDOWN消息是第一次按下,还是重复过的按下。

对于增强型101或102键盘,extended keys are the right ALT and CTRL keys on the main section of the keyboard; the INS, DEL, HOME, END, PAGE UP, PAGE DOWN, and arrow keys in the clusters to the left of the numeric keypad; and the divide (/) and ENTER keys in the numeric keypad. Other keyboards may support the extended-key bit in the lParam parameter.

Windows 2000/XP: 应用程序必须传递wParam参数给TranslateMesage而不需要转换它自身。

消息要求

Minimum DLL Version    None
Header    Declared in Winuser.h, include Windows.h
Minimum operating systems    Windows 95, Windows NT 3.1

免责声明:文章转载自《windows 系统消息之WM_KEYDOWN》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在Winform界面中使用DevExpress的TreeList实现节点过滤查询的两种方式图的遍历算法(2)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Systemd日志管理服务:Journald以及重要配置选项

Journald是systemd引入的用于收集和存储日志数据的系统服务。它试图使系统管理员可以在越来越多的日志消息中更轻松地找到有趣且相关的信息。为了实现此目标,日记中的主要更改之一是用为日志消息优化的特殊文件格式替换简单的纯文本日志文件。这种文件格式使系统管理员可以更有效地访问相关消息。它还为单个系统带来了数据库驱动的集中日志记录实现的某些功能。 概览s...

JavaScript初学指南

目录: 包含与引入(Embedding,including) write 和 writeln 文档对象(document object) bgColor 和 fgColor 消息框(Message Box) 变量(Variables)和条件(Conditions) 函数(Function) onClick onLoad onUnload 表单(Form)...

不恰当使用线程池处理 MQ 消息引起的故障

现状 业务部门反应网站访问特别慢,负责运维监控的同事说MQ消息队列积压了,中间件的说应用服务器内存占用很高,GC 一直回收不了内存,GC 线程占了近 100% 的 CPU,其他的基本上都在等待,数据库很正常,完全没压力。没啥办法,线程、堆 dump 出来后,重启吧,然后应用又正常了。 分析 这种故障之前其实也碰到过了,分析了当时 dump 出来的堆后发现,...

K8S 上部署 Redis-cluster 三主三从 集群

介绍 Redis代表REmote DIctionary Server是一种开源的内存中数据存储,通常用作数据库,缓存或消息代理。它可以存储和操作高级数据类型,例如列表,地图,集合和排序集合。 由于Redis接受多种格式的密钥,因此可以在服务器上执行操作,从而减少了客户端的工作量。 它仅将磁盘用于持久性,而将数据库完全保存在内存中。Redis是一种流行的数据...

RabbitMQ、Kafka、RocketMQ的优劣势

今天我们一起来探讨:  全量的消息队列究竟有哪些?  Kafka、RocketMQ、RabbitMQ的优劣势比较  以及消息队列的选型 最全MQ消息队列有哪些 那么目前在业界有哪些比较知名的消息引擎呢?如下图所示 这里面几乎完全列举了当下比较知名的消息引擎,包括:  ZeroMQ  推特的Distributedlog  ActiveMQ:Apach...

RocketMQ事务消费和顺序消费详解

一、RocketMq有3中消息类型 1.普通消费 2. 顺序消费 3.事务消费 顺序消费场景 在网购的时候,我们需要下单,那么下单需要假如有三个顺序,第一、创建订单 ,第二:订单付款,第三:订单完成。也就是这个三个环节要有顺序,这个订单才有意义。RocketMQ可以保证顺序消费。 rocketMq实现顺序消费的原理  produce在发送消息的时候,把消息...