您的位置:首页 > 其它

【笨嘴拙舌WINDOWS】键盘消息,鼠标消息

2013-09-12 11:22 363 查看
键盘消息

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中附加人在操作时附带的信息,对于键盘消息其附带信息解释如下

WParamLParam
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的“系统消息队列”,然后才放入应用消息队列”

鼠标消息

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

意义WparamLparam
客户区对应的点击
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_NCLBUTTONDOWNHittest表示鼠标在窗口的位置,该值是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释放)”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: