windows如何管理发送具有两个以上参数的消息



研究MFC中的消息处理,我发现:

一条消息包含两个参数,可为您提供有关事件的更多信息。每个参数都是一个32位值:lParam和wParam

因此,当我创建了一个没有参数的用户定义消息ww时,我用代码发送了它:

pParentOfClass ->SendMessage(WM_RECTANGLECHANGED,0,0);  

但只是好奇的是,windows是如何发送具有两个以上参数(如WM_SIZE)的消息的。

正如Roger Rowland在评论中快速指出的那样,在使用消息时,多个参数通常被打包到LPARAM和WPARAM参数的低位和/或高位。

您所说的两个以上的参数可能是指MFC有自己的事件处理程序包装器,它已经从LPARAM和WPARAM参数中获取了必要的信息,并将其转发给自己的事件处理器实现,当然,它可以根据需要拥有任意多的参数。

WM_SIZE示例:

最初,发送WM_SIZE消息时,LPARAM包含一些标志,WPARAM包含宽度和高度(通过按低位和高位打包)。

现在MFC接收到该消息,获取它认为对用户来说必要的所有信息,并调用自己的事件处理程序:

afx_msg void OnSize( 
   UINT nType, 
   int cx, 
   int cy  
);

基本上就是这样。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms632646%28v=vs.85%29.aspxhttp://msdn.microsoft.com/en-us/library/h464d4f3%28v=vs.90%29.aspx

看看MAKEWARM(http://msdn.microsoft.com/en-us/library/windows/desktop/ms632664(v=vs.85).aspx)和MAKELPARAM。

相关内容

  • 没有找到相关文章

最新更新