在MFC的消息反射中,父窗口会给子窗口一个自身处理消息的机会,将消息反射给子窗口处理,如果子窗口处理了该消息,父窗口会忽略对该消息的处理,但是我们可以利用ON_NOTIFY_REFLECT_EX 或者 ON_CONTROL_REFLECT_EX,让子窗口和父窗口都处理该消息。
例如,我们想让子窗口和父窗口同时响应一个CButton的单击事件,可以通过如下步骤:
1、在子窗口类的消息映射中添加ON_CONTROL_REFLECT_EX( BN_CLICKED,memberFxn ),其中函数memberFxn 的原型为: afx_msg BOOL memberFxn ( )。 在这里,只有函数memberFxn返回值为FALSE时,子窗口和父窗口才会都处理该消息。
2、在父窗口中添加ON_COMMAND宏,实现父窗口对消息的响应。