Array|解密:WPARAM和LPARAM中的W和L分别代表什么意思

Windows消息的两个参数
【Array|解密:WPARAM和LPARAM中的W和L分别代表什么意思】曾经有那么一段时间 , Windows还是一个16位的操作系统 。
每一个Windows消息会携带两个参数 , 它们分别被叫做WPARAM和LPARAM 。第一个参数是一个16位的数据(Word) , 所以它被称之为W 。
第二个参数是一个32位的数据(Long) , 所以它被称之为L 。
你可以使用W参数来传递诸如句柄和整数这一类的数据 , 对于指针数据来说 , 你可以使用L参数来传递它 。当Windows被转换为32位版本之后 , WPARAM也从原来的16位迁移到了32位 , 所以 , 虽然WPARAM中的W代表Word , 但是它已经不再是一个16位的数据了 。(甚至在64位操作系统中 , 这两个参数长度被进一步地扩展到了64位 。)
了解这其中的历史故事还是有点用的 。如果你仔细地观察一下Windows消息的设计 , 你会发现 , 如果消息中携带了某个指针信息 , 则这个指针通常会保存在消息的LPARAM参数中 , 如果携带的是一个句柄或者一个整数 , 则通常会使用WPARAM参数来保存 。
了解了这个原理 , 我们在记忆某个Windows消息的参数的时候就会显得容易一点 。相反的 , 如果一个消息的参数违反了上述的惯例 , 则你可能会想:不对劲 , 这里可能有点问题 。
总结
Windows的消息设计体现了通用性设计的精髓:如果你不能确定未来这个东西会是什么 , 那么 , 现在就不要清楚地定义它 。
Array|解密:WPARAM和LPARAM中的W和L分别代表什么意思
文章图片

文章图片


    推荐阅读