几个WM消息其lParam和wParam参数定义


几个WM消息其lParam和wParam参数定义

鼠标消息

lParam:低字组为x 座标,高字组为y 座标,这两个座标是相对于窗口显示区域左上角的位置。

Wparam:指示滑鼠按键以及Shift和Ctrl 键的状态。可以使用头文件WINUSER.H 中定义的位元遮罩来测试wParam。MK 字首代表「滑鼠按键」。

MK_LBUTTON 按下左键
MK_MBUTTON 按下中键
MK_RBUTTON 按下右键
MK_SHIFT 按下Shift 键
MK_CONTROL 按下Ctrl 键

键盘消息

lParam:含有对了解按键非常有用的一些资讯,大概看下图吧。


wParam:放的是按键时产生的虚拟键码。当按下的键可以产生字元信息时则此参数放的是字符的ASCII码。

WM_CTLCOLORBTN

此消息是当口即将为其显示区域着色时,由按钮控件发送给父窗口消息处理程序的一个消息。

lParam:按钮的窗口句柄。

wParam:按钮的设备内容句柄。

WM_DRAWITEM

此消息这出现在以下几种情况中:当按钮被建立时,当按钮被按下或被放开时,当按钮得到或者失去输入焦点时,以及当按钮需要重新着色的任何时候。

lParam:指向形态DRAWITEMSTRUCT结构的指针。

对按钮而言非常重要的结构字段有hDC (按钮的设备内容)、rcItem(提供按钮尺寸的RECT结构)、CtlID(控件窗口ID)和itemState(它说明按钮是否被按下,或者按钮是否拥有输入焦点)。

WM_COMMAND

一般子窗口向父窗口发送此消息。

lParam:子窗口句柄。

wParam:低字组为子窗口的ID号,高字组为通知码。

WM_KILLFOCUS

wParam:正在接收输入焦点的窗口的句柄。

WM_SETFOCUS

wParam:正在失去输入焦点的窗口的句柄。

一般子窗口向父窗口发送的消息为WM_COMMAND,但是滚动条控件不向父窗口发送此消息,而是像窗口滚动条那样发送WM_VSCROLL 和WM_HSCROLL 消息。

在处理卷动消息时,可以通过lParam 参数来区分窗口滚动条与滚动件控件。对于窗口滚动条其值为0,对于滚动条控件其值为滚动条窗口句柄。对于两者来说,wParam 参数的高字组和低字组的含义相同。

当使用者已经从菜单中选中了一个被启用的菜单项,Windows也会向程序发送此消息。如果您碰巧为菜单和子窗口控件使用同一ID码,那么您可以通过lParam的值来区别它们,菜单项的lParam其值为0,请参见下表:

  菜单 控件
LOWORD (wParam): 菜单ID 控件ID
HIWORD (wParam): 0 通知码
lParam: 0 子窗口句柄

WM_SYSCOMMAND消息似于WM_COMMAND消息,只是WM_SYSCOMMAND表示使用者从系统菜单中选择一个启用的菜单项:

wParam: 菜单ID

lParam: 0

然而,如果WM_SYSCOMMAND消息是由按鼠标按键产生的,LOWORD(lParam)和HIWORD(lParam)将包含鼠标光标位置的x和y屏幕坐标。

菜单ID指示系统菜单中的哪一项被选中。对于预先定义的系统菜单项,应该通过和0xFFF0与操作屏蔽低4位,结果值应该为下列之一:SC_SIZE,SC_MOVE,SC_MINIMIZE,SC_MAXIMIZE,SC_NEXTWINDOW,SC_PREVWINDOW,SC_CLOSE,SC_VSCROLL,SC_HSCROLL,SC_ARRANGE,

SC_RESTORE和SC_TASKLIST。此为,wParam可以是SC_MOUSEMENU或SC_KEYMENU.

WM_INITMENU

当使用者选择一个菜单项时,Windows向窗口消息处理程序发送的其中一个消息,此消息通常只需把它传递给DefWindowProc即可。

lParam:0

wParam:主菜单句柄

WM_MENUSELECT

WM_MENUSELECT是一个菜单追踪消息,wParam的值告诉您目前选择的是菜单中的哪一项(加高亮度显示的那个),wParam的高字组中的「选择旗标」可以是下列这些旗标的组合:MF_GRAYED、MF_DISABLED、MF_CHECKED、MF_BITMAP、MF_POPUP、MF_HELP、MF_SYSMENU和MF_MOUSESELECT。如果您需要根据对菜单项的选择来改变窗口显示区域的内容,那么您可以使用WM_MENUSELECT消息。许多程序把该消息发送给DefWindowProc。

LOWORD (wParam):被选中项目:菜单ID或者弹出式菜单句柄

HIWORD (wParam):选择标志

选择标志可以是下列这些标志的组合:MF_GRAYED,MF_DISABLED,MF_CHECKED,MF_BITMAP,MF_POPUP,MF_HELP,MF_SYSMENU,MF_MOUSESELECT。

lParam: 包含被选中项目的菜单句柄

WM_INITMENUPOPUP

当Windows准备显示一个弹出式菜单时,它给窗口消息处理程序发送一个WM_INITMENUPOPUP消息,参数如下:

wParam: 弹出式菜单句柄

LOWORD (lParam):弹出式菜单索引

HIWORD (lParam): 系统菜单为1,其它为0

WM_MENUCHAR

实际上它根本不是菜单消息。在下列两种情况之一发生时,Windows会把这条消息发送到窗口过程:如果用户按Alt和一个与菜单项不匹配的字符时,或者当显示弹出式菜单而用户按下一个与弹出式菜单里的项不匹配的字符键时。

LOWORD(wParam):字符代码(ASCII或Unicode)

HIWORD(wParam):选择码

lParma:菜单句柄

选择码是:

0 不显示弹出式菜单

MF_POPPUP 显示弹出式菜单

MF_SYSMENU 显示系统弹出式菜单。

Windows程序通常应该把该消息传递给DefWindowProc,它一般给Windows返回0,这会使Windows发出蜂鸣。

1) 在消息WM_SIZE中,    cxClient = LOWORD(lParam);
                                              cyClient = HIWORD(lParam);
           lParam在WM_SIZE中,低位表示客户区的宽,高位表示客户区的长

(2) 在消息WM_CREATE中,wParam 来自子窗口
   wmId    = LOWORD(wParam); 表示子窗口的ID
    wmEvent = HIWORD(wParam); 表示子窗口的事件的通知吗
lParam 是指向CREATESTRUCT结构的指针(LPCREATESTRUCT)lParam

(3) WM_COMMAND
LOWORD(wParam)—— 子窗口ID
HIWORED(wParam) —— 通知吗
lParam——子窗口句柄

(4)WM_VSCROLL和 WM_HSCROLL
lParam——如果是窗口滚动条为0,如果是滚动条控制其值为滚动条的句柄
wParam——对于窗口滚动条和滚动条控制而言,意义一样, LOWORD(wParam)表示滚动事件

(5) 在消息WM_KILLFOCUS中,wParam 接受输入焦点的窗口句柄

(6)在消息WM_SETFOCUS中,wParam 失去输入焦点的窗口句柄

(7) WM_DRAWITEM——BS_OWNERDRAW风格的子窗口,重新着色的时候发给主窗口的消息
其中lParam消息指向类型DRAWITEMSTRUCT结构的指针,该结构域中包括hDC,reItem(提供尺寸的RECT结构),CtlID(控制窗口ID),itemState(是否拥有焦点)。

(8) WM_CTLCOLORSCROLLBAR 滚动条控制改变自身颜色的事件。lParam 为触发这个事件的滚动条控制的句柄(HWND)lParam

你可能感兴趣的:(几个WM消息其lParam和wParam参数定义)