這兩個部分都是向類中添加消息處理程序所必需的。消息映射應該在您的類中聲明,以及任何消息處理函數的聲明(例如,OnSize
)。
class CClassWnd : public CBaseClassWnd {
...
afx_msg void OnSize(UINT nType, int cx, int cy);
DECLARE_MESSAGE_MAP
};
afx_msg
只是一個空的佔位符宏 - 它實際上並沒有做任何事情,但總是按照慣例包括在內。
消息映射然後在類的cpp文件中定義:
BEGIN_MESSAGE_MAP(CClassWnd, CBaseClassWnd)
ON_WM_SIZE()
END_MESSAGE_MAP()
這些宏產生一個查找表,其允許由所述窗口接收到的消息被分派到相應的處理函數的類。 ON_WM_SIZE
宏允許WM_SIZE
消息中的wParam
和lParam
消息參數被解碼爲消息處理函數(在這種情況下爲nType
,cx
和cy
)的更有意義的值。 MFC爲大多數窗口消息提供了宏(WM_LBUTTONDOWN
,WM_DESTROY
等)。
您可以在MSDN上的MFC here上找到有關消息映射如何工作的更多信息。
很高興知道這一點,我想了一會兒。也許我只是有太多時間在我的手上......) – 2008-10-14 15:22:57