键盘消息

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释放)”

【笨嘴拙舌WINDOWS】键盘消息,鼠标消息的更多相关文章

  1. 判断软件的闲置时间(使用Application.OnMessage过滤所有键盘鼠标消息)

    GetLastInputInfo是检测系统输入的,应用到某个程序中不合适! 此问题有二种解法来监控输入消息: 1.用线程级HOOK,钩上MOUSEHOOK与KEYBOARDHOOK 2.在Applic ...

  2. 界面控件 - 滚动条ScrollBar(对滚动条消息和鼠标消息结合讲的不错)

    界面是人机交互的门户,对产品至关重要.在界面开发中只有想不到没有做不到的,有好的想法,当然要尝试着做出来.对滚动条的扩展,现在有很多类是的例子. VS2015的代码编辑是非常强大的,其中有一个功能可以 ...

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

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

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

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

  5. 深刻:截获windows的消息并分析实例(DefWindowProc),以WM_NCHITTEST举例(Windows下每一个鼠标消息都是由 WM_NCHITTEST 消息产生的,这个消息的参数包含了鼠标位置的信息)

    1,回调函数工作机制 回调函数由操作系统自动调用,回调函数的返回值当然也是返回给操作系统了. 2,截获操作系统发出的消息,截获到后,将另外一个消息返回给操作系统,已达到欺骗操作系统的目的. 下面还是以 ...

  6. 【转】windows消息和消息队列详解

    转载出处:http://blog.csdn.net/bichenggui/article/details/4677494  windows消息和消息队列 与基于MS - DOS的应用程序不同,Wind ...

  7. windows消息和消息队列

    windows消息和消息队列 转自:http://blog.163.com/zhangjie_0303/blog/static/990827062010113062446767/ 与基于MS - DO ...

  8. Windows的四类消息

    Windows的三类消息1.标准消息宏名称 对映消息 消息处理函数(名称已由系统预设)ON_WM_CHAR WM_CAHR OnCharON_WM_CLOSE WM_CLOSE OnCloseON_W ...

  9. DirectX11 With Windows SDK--05 键盘和鼠标输入

    前言 提供键鼠输入可以说是一个游戏的必备要素.在这里,我们不使用DirectInput,而是使用Windows的消息处理机制,不过要从头开始实现会让事情变得很复杂.DXTK提供了鼠标输入的Mouse. ...

随机推荐

  1. [Js/Jquery]天气接口简单使用

    写在前面 今天在群里有朋友使用一个天气api,觉得挺实用的,就记录一下.省的以后再花费功夫去找. 地址:http://www.k780.com/api,在这个网站提供了实用的几种接口,比如查询ip,天 ...

  2. Firefly卡牌手游《暗黑世界V1.5》服务器端源码+GM管理后台源码

    http://www.9miao.com/content-6-304.html Firefly卡牌手游<暗黑世界V1.5>服务器端源码+GM管理后台源码 关于<暗黑世界V1.5> ...

  3. Delphi托盘类 收集

    收集的两个托盘程序: 1. 托盘区就是在windows的状态栏下方显示时钟.输入法状态的地方, 要把你的程序显示在托盘区: 下面是一个托盘类,只要把下面粘贴到文本文件中,改成TrayIcon.pas, ...

  4. Error Code: 1175 Mysql中更新或删除时报错(未带关键字条件)

    SET SQL_SAFE_UPDATES = 0; SQL_SAFE_UPDATES = {0 | 1} 如果设置为0,则MySQL会放弃在WHERE子句或LIMIT子句中不使用关键字的UPDATE或 ...

  5. HDU 3998 Sequence (最长上升子序列+最大流)

    参考链接:http://www.cnblogs.com/gentleh/archive/2013/03/30/2989958.html 题意:求一个序列的最长上升子序列,及其个数(注意:两个最长上升子 ...

  6. 解高次同余方程 (A^x=B(mod C),0<=x<C)Baby Step Giant Step算法

    先给出我所参考的两个链接: http://hi.baidu.com/aekdycoin/item/236937318413c680c2cf29d4 (AC神,数论帝  扩展Baby Step Gian ...

  7. POJ 2591 1338 2545 2247(数列递归衍生问题,思路挺妙)

    四道题的难度: 2591<1338<2545<2247 POJ 2591 Set Definition: 这是从discuss里看来的,写的挺好,直接copy,根据我的代码稍有改动( ...

  8. java编译做了哪些事?

    Javac编译器,主要做了如下的事情:1.解析与填充符号表:    2.注解处理器:    3.语义分析与字节码生成:        3.1.标注检查        3.2.数据及控制流分析      ...

  9. 安卓app缓存设置

    无论大型或小型应用,灵活的缓存可以说不仅大大减轻了服务器的压力,而且因为更快速的用户体验而方便了用户. Android的apk可以说是作为小型应用,其中99%的应用并不是需要实时更新的,而且诟病于蜗牛 ...

  10. 20个最受欢迎的Linux命令

    http://code.csdn.net/news/2819566 1.   以 root 帐户执行上一条命令 sudo !! 2.  利用 Python 搭建一个简单的 Web 服务器,可通过 ht ...