mfc訊息反射機制簡介

2021-05-22 08:03:04 字數 639 閱讀 7403

在windows裡面,子控制項經常向父控制項傳送訊息,例如很多子控制項要繪製自己的背景,就可能向父視窗傳送訊息wm_ctlcolor。對於從子控制項發來的訊息,父控制項有可能在處理之前,把訊息返還給子控制項處理,這樣訊息看起來就想是從父視窗反射回來一樣,故此得名:訊息反射。

訊息反射機制剝離了子父控制項之間的關係,簡化了父控制項的功能和實現。一般來說,訊息反射機制的傳遞過程如下:

1、控制項訊息產生時,子控制項首先傳送訊息至父控制項的虛函式cwnd::onnotify();

2、onnotify()會呼叫函式reflectlastmsg(),該函式功能是向子控制項反射最後乙個訊息;

3、反射最後乙個訊息時reflectlastmsg會呼叫sendchildnotifylastmsg()函式,用於向子控制項傳送乙個通知訊息,使得子控制項可以

響應處理;

4、呼叫虛函式onchildnotify(),如果傳送視窗沒有進行過載處理,則呼叫reflectchildnotify()函式;

5、reflectchildnotify函式進行標準的反射訊息的訊息對映處理,如果反射訊息被處理則返回true,否則返回false。

簡單說來,控制項訊息的處理過程:發給父控制項->反射到子控制項->進入父控制項相應對映函式處理(前提是父視窗過載了該訊息),即父控制項一旦處理就會掩蓋子控制項的處理。

MFC的訊息反射機制

1 訊息反射解釋 父視窗將子視窗發給它的通知訊息,首先反射回子視窗進行處理 即給子視窗乙個機會,讓子視窗處理此訊息 這樣通知訊息就有機會能被子視窗自身進行處理。2 mfc中引入訊息反射的原因 在windows的訊息處理中,子視窗的發給其父視窗的通知訊息只能由其父視窗進行處理,這使得子視窗的自身能動性...

MFC的訊息反射機制

1 訊息反射解釋 父視窗將子視窗發給它的通知訊息,首先反射回子視窗進行處理 即給子視窗乙個機會,讓子視窗處理此訊息 這樣通知訊息就有機會能被子視窗自身進行處理。2 mfc中引入訊息反射的原因 在windows的訊息處理中,子視窗的發給其父視窗的通知訊息只能由其父視窗進行處理,這使得子視窗的自身能動性...

深度剖析MFC訊息反射機制

附 我稍加修改 摘要 在前面我們分析了控制項通知訊息wm notify,和wm notify緊密聯絡的還有乙個mfc新特性 訊息反射。本文中,我想就這個問題作乙個全面的論述,如果有錯誤,還望各路大蝦批評指正。什麼是訊息反射?在windows裡面,子控制項經常向父控制項傳送訊息,例如很多子控制項要繪製...