Windows消息的两个参数
曾经有那么一段时间,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的消息设计体现了通用性设计的精髓:如果你不能确定未来这个东西会是什么,那么,现在就不要清楚地定义它。
领取专属 10元无门槛券
私享最新 技术干货