【问题标题】:C++ wParam and Lparam confusionC++ wParam 和 Lparam 混淆
【发布时间】:2012-08-07 10:33:51
【问题描述】:

我知道 wParam 和 lParam 是(我相信是 32 位)特定于当时传递的消息的信息位,但是有没有办法知道每条消息在两者中的内容是什么?

我在某处读到 wParam 是 16 位而 lParam 是 32 位,但它仍然没有真正解释我应该看到什么,或者至少我应该看到哪个变量。我见过一些使用 lParam 的消息示例,以及使用 wParam 的其他消息示例,以及两者都使用的其他示例。

例如,我看到 keydown 使用 wParam 来接收特定的键,但是在 LButtondown 中使用了 lParam,上面的 16 是 y,下面的 16 是 x。一个具体应该在 lParam 中的原因是有道理的(因为它需要 32 位),但是我怎样才能找出其他消息发送了哪些,以及它们中的内容是什么?

(对不起,我想我可能已经在那个轻微的咆哮中重复了我的问题几次)

【问题讨论】:

标签: c++ winapi


【解决方案1】:

对不起。但是要知道每条消息的 wParam 和 lParam 中传递了什么,可靠的方法是参考documentation

我在某处读到 wParam 是 16 位而 lParam 是 32 位

根据thisWPARAM 是一个无符号(32 位)整数,而LPARAM 是一个有符号long

【讨论】:

  • 所以基本上没有一个特定的押韵或原因,我只需要依靠文档来弄清楚每条消息吗?我的意思是,我想这是有道理的,我想我只是想知道是否存在模式。谢谢!
  • @DavidTorrey 是的。一开始很麻烦,但随着时间的推移,你会习惯并记住大多数常见消息的值。
  • @DavidTorrey:在过去,WPARAM 是 16 位,但 LPARAM 一直是 32 位。因此,一般来说,LPARAM 用于指针,WPARAM 用于整数值。但实际上你应该阅读文档。
  • 另外,请注意这些当前是“指针大小的”:所以在 Win32 上,它们是 32 位,但是当代码编译为 Win64 时,它们是 64 位(与 LRESULT 类似)。
【解决方案2】:

您必须查看您感兴趣的每条消息的 MSDN 参考,并单独阅读 wParamlParam 对它的意义。完整的参考资料可以在here找到。

【讨论】:

    【解决方案3】:

    【讨论】:

      猜你喜欢
      • 2011-01-31
      • 2013-07-24
      • 2016-10-20
      • 2012-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-20
      相关资源
      最近更新 更多