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


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

鼠标消息 测试

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

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

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

键盘消息 code

lParam:含有对了解按键很是有用的一些资讯,大概看下图吧。 索引


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

WM_CTLCOLORBTN it

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

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

相关文章
相关标签/搜索