键盘输入焦点与键盘消息的产生流动

博客探讨了输入焦点的概念,说明只有一个窗口能接收到键盘消息,并解释了窗口如何通过WM_SETFOCUS和WM_KILLFOCUS消息管理输入焦点。同时,详细描述了键盘消息从用户按下键到被窗口消息处理程序接收的流程,包括系统消息队列和应用程序消息队列的角色。
摘要由CSDN通过智能技术生成

键盘输入以消息的形式传递给程序的窗口消息处理程序

关于输入焦点

 所有的程序共享一个键盘,一个程序的所有窗口共享一个键盘

当键盘按下时,只有一个窗口消息处理函数接收到键盘消息,键盘消息包含指定的窗口句柄

接收到键盘消息的窗口就是当前获取输入焦点的窗口。输入焦点的概念与活动窗口的概念很相近。有输入焦点的窗口是活动窗口或活动窗口的衍生窗口

如果活动窗口有子窗口,那么有输入焦点的窗口既可以是活动窗口也可以是其子窗口。

最常见的子窗口有类似以下控件:出现在对话框中的下压按钮、单选钮、复选框、滚动条、编辑方块和清单方块。

子窗口不能自己成为活动窗口。只有当它是活动窗口的衍生窗口时,子窗口才能有输入焦点。子窗口控件一般通过显示一个闪烁的插入符号或虚线来表示它具有输入焦点。

窗口消息处理程序通过拦截WM_SETFOCUS和WM_KILLFOCUS消息来判定它的窗口何时拥有输入焦点。

WM_SETFOCUS指示窗口正在得到输入焦点,WM_KILLFOCUS表示窗口正在失去输入焦点。

键盘消息的传递流动

1)使用者按下并释放键盘上的键时,Windows和键盘驱动程序将硬件扫描码转换为格式消息MSG。

2)这些消息首先保存在Windows的「系统消息队列」,并不保存在消息队列中。

系统消息队列是独立的消息队列,它由Windows维护,用于初步保存使用者从键盘和鼠标输入的信息。
只有当Windows应用程序处理完前一个使用者输

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值