消息反射--针对通知消息

Posted on 2018-09-04 17:25  moisiet  阅读(149)  评论(0编辑  收藏  举报

一,通知消息来源:

通知消息是由控件产生的,一般以NM_开头的消息都是通知消息。

二,消息反射原理与控件处理自身通知消息的方法

通知消息首先发送到父窗口,由父窗口OnNotify()函数处理。该函数首先会调用RefectLastMsg()将该消息传递给控件,给改控件一个机会处理,该控件的OnChildNotify()函数会抓住这个机会。

方法一:

如果需要控件处理自己的通知消息,可以在该函数中进行处理。如果该函数处理了,返回TURE,父窗口就不再处理该消息了。若返回FALSE,则父窗口会继续处理该消息。

因此对于一个按钮,即要让它被点击后按钮变色,又要让他响应父窗口的需求,就可以返回FALSE。

这就是消息反射。

方法二:

当然还有另一种方法让控件处理自己的通知消息:MFC的向导。

MFC消息向导中,有些消息前面有个=,表示该消息是自身的通知消息,点击进去在处理函数中进行操作就可以了。

三,OnNotify()函数的作用

该函数用于响应来自字控件的通知消息,该函数会根据消息入口查找子控件的通知消息在父窗口中的响应函数进行响应。可以重载,那样就不需要该消息的消息入口了。