【问题标题】:[C#][Win32 API] PostMessage Help?[C#][Win32 API] PostMessage 帮助?
【发布时间】:2010-04-26 22:55:05
【问题描述】:

我查看了站点和 MSDN 文档,但我仍然不明白 PostMessage() 的最后一个参数。

在人们询问如何使用 PostMessage 的论坛上,人们使用以下两种实现之一进行回复:

  1. PostMessage(WindowHandle, WM_KEYDOWN, KeyCode, MapVirtualKey(KeyCode, 0)
  2. PostMessage(WindowHandle, WM_KEYDOWN, KeyCode, 0);

有什么区别?为什么在某些情况下最后一个参数可以保留为 0,但在其他情况下必须“移位”以及所有这些?

只是一个简单的问题。不需要论文回复(尽管他们会非常感激)。任何见解都值得赞赏。提前致谢。

【问题讨论】:

    标签: c# api winapi postmessage


    【解决方案1】:

    有关 PostMessage 的更多信息,请参阅here。每条消息都是不同的,并且对于需要哪些参数有自己的规范。在许多方面,您可以将其视为具有一个名称(发布消息)的通用函数,该函数委托给另一个函数(消息名称)并将这些参数传递给它。

    与其他参数一样,最后一个参数是特定于消息的,可能会有所不同。

    BOOL PostMessage(
      __in  HWND hWnd,
      __in  UINT Msg,
      __in  WPARAM wParam,
      __in  LPARAM lParam
    );
    

    在您的第一条消息中,WM_KEYDOWN 只需要 lParam 中 MapVirtualKey 的高 16 位结果。我不再熟悉此消息,但我怀疑发生的情况是,由于 0 作为第二个参数传递,因此不需要虚拟键来扫描代码(反之亦然)翻译,但是键码是lParam的高16位仍然需要

    【讨论】:

    • 完美。感谢您的宝贵时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多