先略谈一下什么是WPARAM 与 LPARAM 参数:
在我们的程序和WindowAPI打交道时,特别是在处理鼠标键盘消息时,WPARAM 与 LPARAM 参数会经常出现。在Win32 API中,WPARAM和LPARAM都是32位,所以在数据类型上没有什么本质的区别。
但是对于不同的WinAPI,WPARAM 与 LPARAM 参数被承载者不同的含义。WPARAM的值及格式取决于主要的事件消息类型。在不同的情况下,WPARAM变元可能传输一个坐标点对,使用低字值标识次要的消息类型,提供某些其他的数据类型,或被完全忽略。在很多情况下,WPARAM值将被看成两个独立的字值,分别具有不同的功能。LPARAM的值和意思取决于主事件消息类型。在不同的情况下,LPARAM变元可能提供一个字符串或记录结构的指针,分解为一组字、字节或标志值,或者往往完全没有用。
Windows的消息必须参考帮助文件才能知道具体的含义。如果是你定义的消息,愿意怎么使这两个参数都行。但是习惯上,我们愿意使用LPARAM传递地址,而WPARAM传递其他参数。
下面是microsoft windows内部常见用法:
根据消息类型:
------WM_PAINT,WM_COMMAND等:
LOWORD(wParam): 子窗口ID
HIWORD(wParam): 通知码(告诉父窗口到底发生了什么变化,通知码和控件的类型以及事件相关,系统对每一类控件的每一个事件的通知码都有明确的定义,用一个系统整常量来表示)
lParam: 子窗口句柄
------WM_LBUTTONDOWN,WM_MOUSEMOVE,WM_LBUTTONUP等:
LOWORD(lParam):坐标的x值
HIWORD(lParam):坐标的y值
然后是常见的C#版的WPARAM 与 LPARAM 参数的解析函数
本文介绍了Windows API中WPARAM和LPARAM参数的含义,详细讲解了如何在C#中解析这两个参数,特别是HIWORD(lParam)用于获取坐标y值的方法。
743

被折叠的 条评论
为什么被折叠?



