Windows如何设置发送带有两个以上参数的消息?

时间:2013-08-30 07:31:59

标签: visual-studio-2010 mfc event-handling message sendmessage

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

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

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

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

但只是好奇,Windows如何设法发送包含两个以上参数的邮件,例如WM_SIZE

2 个答案:

答案 0 :(得分:1)

正如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.aspx http://msdn.microsoft.com/en-us/library/h464d4f3%28v=vs.90%29.aspx

答案 1 :(得分:0)