WPARAM 和 LPARAM 到底啥意思???

madbunny 2012-10-10 04:35:01
RT。
初学MFC,经常见到这两种类型的参数,追根溯源发现就是两个整数嘛。从字面意思上来说就是两个参数,一个很宽,一个很长。根本就无法理解这俩脑残名字到底想表达什么。求大神们给介绍下。
...全文
8117 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
breaksoftware 2012-10-15
  • 打赏
  • 举报
回复
没有规律,这个要视不同的消息而定,不同的消息会利用这个两个参数或其中的某一个参数保存需要的信息。具体的得查MSDN。
[Quote=引用 14 楼 的回复:]

我肯定也去网上翻找过了嘛~~这段话我是知道的。可是问题还是没有解决:这俩参数在大多数约定俗成的情况下是存放一些什么样的东西呢?引用 7 楼 的回复:

借花献佛,从度娘那儿找到的

WPARAM 和 LPARAM,消息响应机制
wParam和lParam 这两个是Win16系统遗留下来的产物,在Win16API中WndProc有两个参数:
一个是WORD类型的16位整型变量;另一个……
[/Quote]
谁学逆向工程 2012-10-15
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]
哦~~那就是说如果是MFC函数或者是WINAPI的话就需要查MSDN知道这些参数的作用。但是既然有了不同的名字肯定有一些规律可循吧?比如通常是做哪些内容的参数?[/Quote]
你多查几个消息看看,你看有规律吗。反正我是不觉得有规律
华美乐章 2012-10-15
  • 打赏
  • 举报
回复
我一直将这2个类型当做 DWORD类型看,哈哈,
深圳老码农 2012-10-11
  • 打赏
  • 举报
回复
以前看到这个也头=疼,看给位大大理解的挺透的哈。
madbunny 2012-10-11
  • 打赏
  • 举报
回复
也就是说,没有什么规律可循了?[Quote=引用 16 楼 的回复:]

引用 14 楼 的回复:
我肯定也去网上翻找过了嘛~~这段话我是知道的。可是问题还是没有解决:这俩参数在大多数约定俗成的情况下是存放一些什么样的东西呢?

人家只说是 wParam 这个写法就约定俗成地沿用下来了。因为一开始它是 WORD 类型,后来扩展为 LONG 型了,但其表示类型 WORD 的前缀 w 还没有改变。操作系统是微软开发的,自然不同的消息里这两个参数都包括什么信息也只有……
[/Quote]
「已注销」 2012-10-11
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]
我肯定也去网上翻找过了嘛~~这段话我是知道的。可是问题还是没有解决:这俩参数在大多数约定俗成的情况下是存放一些什么样的东西呢?
[/Quote]
人家只说是 wParam 这个写法就约定俗成地沿用下来了。因为一开始它是 WORD 类型,后来扩展为 LONG 型了,但其表示类型 WORD 的前缀 w 还没有改变。操作系统是微软开发的,自然不同的消息里这两个参数都包括什么信息也只有微软知道了。这两个参数中包含的信息在不同的消息下是不一样的:在不同的消息中,有可能两个参数都不需要,也有可能需要一个,或者两个都需要。这两个参数里存放的是什么东西,那是微软规定的。它什么都可能包括:各种句柄、缓冲区指针、数值、结构体指针等。只要是微软公开的消息,那么其中的信息都可以在 MSDN 中查找得到。
madbunny 2012-10-11
  • 打赏
  • 举报
回复
哦~~那就是说如果是MFC函数或者是WINAPI的话就需要查MSDN知道这些参数的作用。但是既然有了不同的名字肯定有一些规律可循吧?比如通常是做哪些内容的参数?[Quote=引用 9 楼 的回复:]

你看窗口过程,他有4个参数,第二个参数是消息,后两个消息就是 WPARAM 和 LPARAM,这两个参数是对第二个参数的补充。因为好多时候第二个参数的信息不够用,所以又有了这两个参数。
也许你要问这两个参数是啥内容,那就要看第二个参数的内容了。你可以查查MSDN,比如当第二个参数是 WM_LBUTTONDOWN 的时候,他会给你解释 WPARAM 和 LPARAM 的具体内容
[/Quote]
madbunny 2012-10-11
  • 打赏
  • 举报
回复
我肯定也去网上翻找过了嘛~~这段话我是知道的。可是问题还是没有解决:这俩参数在大多数约定俗成的情况下是存放一些什么样的东西呢?[Quote=引用 7 楼 的回复:]

借花献佛,从度娘那儿找到的

WPARAM 和 LPARAM,消息响应机制
wParam和lParam 这两个是Win16系统遗留下来的产物,在Win16API中WndProc有两个参数:
一个是WORD类型的16位整型变量;另一个是LONG类型的32位整型变量。因此根据匈牙利命名法,16位的变量就被命名为wParam, 32位的变量就被命名为lParam。
到了Win32API中……
[/Quote]
小兵_小白 2012-10-11
  • 打赏
  • 举报
回复
可以用spy++工具去获取一些应用程序的消息,后面都会跟上wparam和lparam这两个参数的值。这样看一下,说不定你更能理解一点。个人建议找一些windows的消息资料看一看
gzhi1992 2012-10-10
  • 打赏
  • 举报
回复
7楼正解
《windows程序设计》里有讲
vcf_reader 2012-10-10
  • 打赏
  • 举报
回复
增加可读性而已
傻X 2012-10-10
  • 打赏
  • 举报
回复
一直知道lPara是指的是long,但是不知道wPara指的是什么。今天才知道原来是WORD
谁学逆向工程 2012-10-10
  • 打赏
  • 举报
回复
你看窗口过程,他有4个参数,第二个参数是消息,后两个消息就是 WPARAM 和 LPARAM,这两个参数是对第二个参数的补充。因为好多时候第二个参数的信息不够用,所以又有了这两个参数。
也许你要问这两个参数是啥内容,那就要看第二个参数的内容了。你可以查查MSDN,比如当第二个参数是 WM_LBUTTONDOWN 的时候,他会给你解释 WPARAM 和 LPARAM 的具体内容
Eleven 2012-10-10
  • 打赏
  • 举报
回复
和具体的消息相关,详细参考MSDN文档~
breaksoftware 2012-10-10
  • 打赏
  • 举报
回复
借花献佛,从度娘那儿找到的

WPARAM 和 LPARAM,消息响应机制
wParam和lParam 这两个是Win16系统遗留下来的产物,在Win16API中WndProc有两个参数:
一个是WORD类型的16位整型变量;另一个是LONG类型的32位整型变量。因此根据匈牙利命名法,16位的变量就被命名为wParam, 32位的变量就被命名为lParam。
到了Win32API中,原来的16位变量也被扩展为32位,因此此时wParam和lParam的大小完全相同。
在Win32API的早期,为了保证和Win16API的代码可移植性MS定义了WPARAM和LPARAM两个宏。
当时保留了w前缀的原因一方面是由于WPARAM宏也已W开头,还有也因为要提醒程序员注意到可移植性,当然到了现在Win16早已退出历史舞台,这个前缀也就约定俗成的沿用下来了。
stjay 2012-10-10
  • 打赏
  • 举报
回复
应该是word param和long param
是16位时代的产物,为兼容保留下来
对于现在的32和64,两个是一样的
Dobzhansky 2012-10-10
  • 打赏
  • 举报
回复
如果要你来设计一个窗口函数(窗口过程)
如何才能通用, 并且简洁
这个函数签名

LRESULT WINAPI
(HWND hWnd, UING msg, WPARAM wParam, LPARAM lParam)

就是这样, 任何窗口消息都用这个入口进入.
可以描述任何你想象到的参数,

如果 msg 需要的参数不能用 WPARAM LPARAM 来描述,
通常是封装起来, 传入指针.
wsgxiaomianao 2012-10-10
  • 打赏
  • 举报
回复
LRESULT SendMessage(
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);
Parameters
hWnd
[in] Handle to the window whose window procedure will receive the message. If this parameter is HWND_BROADCAST, the message is sent to all top-level windows in the system, including disabled or invisible unowned windows, overlapped windows, and pop-up windows; but the message is not sent to child windows.
Msg
[in] Specifies the message to be sent.
wParam
[in] Specifies additional message-specific information.
lParam
[in] Specifies additional message-specific information.

只是重命名而已,使人一目了然...
  • 打赏
  • 举报
回复
句柄,区分两个相同程序的不同窗口和函数
比如你要游戏双开2个号,没有句柄计算机无法识别你到底在操作哪个号
「已注销」 2012-10-10
  • 打赏
  • 举报
回复
网上一搜一大把,百度百科都有介绍,不要学东西就一个人在那钻。还有把mfc的消息相应机制了解一下,可能对你了解这两个东西有点帮助。毕竟学mfc windows的东西消息相应是必须过关的。
加载更多回复(1)

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧