0

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

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

因此,当我创建一个不带参数的用户定义消息时,我将其与代码一起发送:

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

但只是好奇,windows如何设法发送带有两个以上参数的消息,如WM_SIZE.

4

2 回答 2

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

于 2013-08-30T07:37:21.220 回答
0

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

于 2013-09-02T19:04:26.820 回答