我查看了网站和MSDN文档,但我仍然不理解PostMessage()的最后一个参数。
在人们询问如何使用PostMessage的论坛上,人们回复两种实现之一:
有什么区别?为什么最后一个参数在某些情况下可以保留为0,但必须“移位”并在其他情况下将其全部保留?
只是一个简单的问题。不需要论文回复(尽管他们会非常感激)。任何见解都表示赞赏。提前谢谢。
答案 0 :(得分:0)
有关PostMessage的更多信息,请参阅here。每条消息都是不同的,并且有自己的规范来确定所需的参数。在许多方面,您可以将其视为一般函数,其中一个名称(发布消息)委托给另一个函数(消息名称)并将其传递给那些参数。
最后一个参数与其他参数一样是特定于消息的,可以有所不同。
BOOL PostMessage(
__in HWND hWnd,
__in UINT Msg,
__in WPARAM wParam,
__in LPARAM lParam
);
在你的第一条消息中,WM_KEYDOWN只需要高16位的lParam中的MapVirtualKey结果。我不再喜欢这个消息了,但是我怀疑发生的事情是因为0作为第二个参数被传递,所以没有虚拟键来扫描代码(反之亦然)需要翻译,但是密钥代码是仍然需要lParam的高16位