键盘消息

Windows系统无论何时只有一个窗口(可能是子窗口,也就是控件)能获得焦点。

焦点窗口通过windows消息来响应人的键盘操作,与键盘相关的常用消息罗列如下:

WM_KEYDOWN   按下键

WM_KEYUP         松开键

WM_SYSKEYDOWN   按下系统键(Alt)

WM_SYSKEYUP         松开系统键

WM_CHAR  按下松开后WINDOWS产生的字符消息  (A B C D 。。。)

WM_SYSCHAR  按下松开后WINDOWS产生的系统字符消息 (Home End PageUp PageDown 。。。)

人操作键盘后,键盘的电路板会打开特定的电路,经过键盘驱动程序,发送给windows操作系统,然后由系统产生计算机能理解的人的操作行为,操作系统会在Wparam和Lparam中附加人在操作时附带的信息,对于键盘消息其附带信息解释如下

  WParam LParam
WM_KEYDOWN 虚拟键码

这个32位整形参数的每一位均赋予一定的意义:

0-15

指定当前消息重复的次数。如果按键足够长,会发送多个消息。然而,重复次数不进行累加。

16-23

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

24

通常为0

25-28

保留,未使用。

29

是否按下了Alt,如果是为1,否则为0

31

指定转换状态。对于按下消息,该值总是0.松开消息,该值为1

WM_KEYUP 虚拟键码 同上
WM_SYSKEYDOWN 虚拟键码 同上
WM_SYSKEYUP 虚拟键码 同上
WM_CHAR 字符(Ascii或者Unicode) 同上
WM_SYSCHAR 字符(Ascii或者Unicode) 同上

“Windows为每一个应用程序保持了一个消息队列,在翻译键盘驱动消息为WINDOWS消息之后,操作系统先将消息发送到Windows的“系统消息队列”,然后才放入应用消息队列”

鼠标消息

对于鼠标消息其附带信息解释如下

  意义 Wparam Lparam
  客户区对应的点击    
WM_LBUTTONDOWN 按下左键 指示鼠标键及Shift和Ctrl的状态
MK_LBUTTON
MK_MBUTTON
MK_RBUTTON
MK_SHIFT      按下Shift键
MK_CONTROL 按下Ctrl键
低16位:鼠标在客户坐标下的X值
高16位:鼠标在客户坐标下的Y值
WM_LBUTTONUP 释放左键    
WM_LBUTTONDBLCLK 双击左键    
WM_MBUTTONDOWN 按下中键    
WM_MBUTTONUP 释放中键    
WM_MBUTTONDBLCLK 双击中键    
WM_RBUTTONDOWN 按下右键    
WM_RBUTTONUP 释放右键    
WM_RBUTTONDBLCLK 双击右键    
  非客户区对应的点击    
WM_NCLBUTTONDOWN   Hittest表示鼠标在窗口的位置,该值是windows处理WM_NCHITTEST消息完毕后的返回结果:

HTBORDER 

In the border of a window that does not have a sizing border

HTBOTTOM

In the lower horizontal border of a window

HTBOTTOMLEFT

In the lower-left corner of a window border

HTBOTTOMRIGHT

In the lower-right corner of a window border

HTCAPTION

In a title bar

HTCLIENT

In a client area

HTERROR

On the screen background or on a dividing line between windows (same as HTNOWHERE, except that the DefWindowProc function produces a system beep to indicate an error)

HTGROWBOX

In a size box (same as HTSIZE)

HTHSCROLL

In a horizontal scroll bar

HTLEFT

In the left border of a window

HTMENU

In a menu

HTNOWHERE

On the screen background or on a dividing line between windows

HTREDUCE

In a Minimize button
HTRIGHT    In the right border of a window

HTSIZE

In a size box (same as HTGROWBOX)

HTSYSMENU

In a System menu or in a Close button in a child window

HTTOP

In the upper horizontal border of a window

HTTOPLEFT

In the upper-left corner of a window border

HTTOPRIGHT

In the upper right corner of a window border

HTTRANSPARENT

In a window currently covered by another window

HTVSCROLL

In the vertical scroll bar

HTZOOM

In a Maximize button

低16位:鼠标在屏幕坐标下的X值
高16位:鼠标在屏幕坐标下的Y值
WM_NCLBUTTONUP      
WM_NCLBUTTONDBLCLK      
WM_NCMBUTTONDOWN      
WM_NCMBUTTONUP      
WM_NCMBUTTONDBLCLK      
WM_NCRBUTTONDOWN      
WM_NCRBUTTONUP      
WM_NCRBUTTONDBLCLK      
       
WM_NCHITTEST 非客户区命中测试 未使用 低16位:鼠标在屏幕坐标下的X值
高16位:鼠标在屏幕坐标下的Y值

“WM_NCHITTEST消息优先于其他鼠标消息,当鼠标移动,或者被按下键,就会发送该消息,如果鼠标没有被捕获,就将消息发送给鼠标下的窗口,否则发送给捕获窗口(使用SetCapture(hwnd)捕获,ReleaseCapture释放)”

转载于:https://www.cnblogs.com/pavkoo/p/3316506.html

【笨嘴拙舌WINDOWS】键盘消息,鼠标消息相关推荐

  1. windows编程之鼠标消息总结

    1 确定鼠标是否存在:fMouse = GetSystemMetrics (SM_MOUSEPRESENT) ; 2 获取鼠标上按键数目:cButtons = GetSystemMetrics (SM ...

  2. windows消息 鼠标消息、定时器消息

    鼠标消息分类: 1.基本鼠标消息 WM_LBUTTONDOWN-鼠标左键按下 WM_LBUTTONUP-鼠标左键抬起 WM_RBUTTONDOWN-鼠标右键按下 WM_RBUTTONUP-鼠标右键抬起 ...

  3. vc鼠标消息与键盘消息

    在Microsoft Windows 中,键盘和鼠标是两个标准的用户输入源,在一些交叠的操作中通常相互补充使用.当然,鼠标在今天的应用程序中比10年前使用得更为广泛.甚至在一些应用程序中,我们更习惯于 ...

  4. windows sdk 窗体和消息

    窗口和消息    在前两章,程序使用了同一个函数MessageBox来向使用者输出文字.MessageBox函数会建立一个「窗口」.在Windows中,「窗口」一词有确切的含义.一个窗口就是屏幕上的一 ...

  5. 【C/C++ Windows编程】Windows系统消息、Qt消息事件、linux下kill信号

    Windows系统消息 文章目录 Windows系统消息 前言 一.什么是窗口? 二.什么是消息? 消息分类: windows消息机制架构图: 函数说明 消息结构体 GetMessage Transl ...

  6. 代码赏析:子窗口对于键盘和鼠标的响应

    一.引言 首先声明,代码并不是我写的:其次,代码是我在小甲鱼的<Win32 SDK程序设计>系列教程的第41讲中看到的.因为本人一方面在学习这个教程,一方面也对于优美的代码有着自己的独特的 ...

  7. windows 编程 —— 消息与参数(滚动条、键盘、鼠标)

    目录: 滚动条 键盘 鼠标 滚动条ScrollBar 发送消息:WM_VSCROLL和WM_HSCROLL 参数wParam:wParam消息参数被分为一个低字组和一个高字组.wParam的低字组是一 ...

  8. Windows编程捕获特定窗口及键盘鼠标消息模拟

    Windows编程捕获特定窗口及键盘鼠标消息模拟 一.简介 二.使用到的API简介 三.获取Windows记事本的编辑区窗口的句柄并模拟输入操作 1.分析 2.代码一 3.代码二 四.后记 一.简介 ...

  9. 10 Windows编程——鼠标消息

    和鼠标相关的三个属于:click,double-click,drag 鼠标消息和键盘消息不同:只要鼠标跨越某个窗口,或者在某个窗口中按键,消息. 客户去鼠标消息 WM_MOUSEMOVE WM_[L, ...

最新文章

  1. linux配置ip 网关 和dns(转)
  2. python3.0内建函数大全_python3内置函数大全
  3. 网上找的关于微信开发一些常用代码
  4. 卡方分布的期望和方差_T检验、F检验、卡方检验详细分析及应用场景总结
  5. MySQL设置数据库及表的字符集
  6. linux可以生成pdb调试信息吗,Linux通过使用pdb简单调试python计划
  7. Hive体系结构(一)架构与基本组成
  8. mysql中查询出现的错误_在MySQL查询中查询语法错误
  9. MySQL在like查询中是否使用到索引
  10. Android 微光闪烁效果之更强Shimmer-android
  11. Elasticsearch与SpringBoot整合 High-level-client-rest
  12. vb 数组属性_[读书笔记]CSAPP:7[VB]机器级表示:函数
  13. 什么是WAP?wap技术简介(转)
  14. (转)质量的5大手册APQP、PPAP 、FMEA、 SPC 、MSA 是什么意思?
  15. 2022-2028全球与中国以太网控制器市场现状及未来发展趋势
  16. 数据结构——线性表的链式存储
  17. [LOJ6437][计算几何]PKUSC2018:PKUSC
  18. 【岗位技能要求】人工智能+Python
  19. java中一元加号和减号是什么_一元运算符
  20. 内核学习——VEH / SEH

热门文章

  1. php创建多页ppt,详解PPT中多个人物介绍页的设计思路
  2. 用于制作电视广告和音乐视频的计算机,基于BS方式实现视音频编辑的系统及方法专利_专利查询 - 天眼查...
  3. C++进阶实战——基于多态的职工管理系统
  4. 基于Springboot人力资源管理系统设计
  5. 微软大中华区COO鲍方德:诉番茄花园并非卸磨杀驴
  6. 猜测在学习新工具中的作用,一个实例
  7. opencv进阶篇---银行卡数字识别
  8. matlab 画图 fontsize,matlab 中fontsize 什么意思
  9. 【PCIE体系结构二】计算机内部总线
  10. 如何从视频中提取音频?这几个提取视频中音频的软件推荐给你