MFC消息映射的一些理解

有些人覺得MFC很神奇,卻沒有被它那稀奇古怪的typedef嚇跑。本來要做這樣一種自動生成代碼的框架有另外一種實現,就是用可讀性更強的虛擬函數來實現動態綁定,對於MFC這樣一種機制,我覺得可能有兩種原因,使得它呈現出這樣古怪的風格。第一,可能當時C++還沒有那麼完善;第二,可能考慮到效率的和空間的問題。

 

MFC消息映射宏的機制並不難理解,用一句話來概括,就是在你已經實現的一些類裏面去插入一些函數和變量。

 

看如下代碼,估計寫過MFC程序的同學都很熟悉這樣的東西:

 

 

 

BEGIN_MESSAGE_MAP 和 END_MESSAGE_MAP 就是兩個宏,它的作用就是在你的代碼中插入一些東西。看到 AFXWIN.H 的第1195行。

 

 

 

他要插入的東西其實就是這個,擴展開來就是兩個函數成員,兩個成員變量。再看到 AFXWIN.H 的第1165行。

 

 

 

可以知道其中AFX_MSGMAP就是一個結構體,第一個成員是一個指向回調函數的指針,第二個成員是消息相關的一個結構體,如下:

 

 

 

 

 

至此,大概知道了它是一個什麼樣的過程了吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章