使用class wizard自动生成的代码中,和消息映射直接相关的语句是
[cpp]
DECLARE_MESSAGE_MAP()
和
[cpp] view plaincopy
BEGIN_MESSAGE_MAP(CDeawView,CView)
ON_WM_LBUTTONDOWN()
.......
ON_COMMAND(ID_FILE_PRINT,CView::OnfilePrint)
END_MESSAGE_MAP()
这两句构建了一个伟大的数据结构--MFC消息映射路由。这些宏的具体的代码,有兴趣的读者可以刨根问底一下,我下面说说他们的作用吧,毕竟总结是一种重要的学习方法。它们的作用:DECLARE_MESSAGE_MAP为该类申明了记录消息的框架,框架中每个元素由BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间的内容填充,结果是产生了一个消息映射表。
内存中的映射表可视化表示可以参考侯捷《深入浅出MFC》Page417,这个庞然大物再次向我们昭示了其实,内存映射表是个巨大的数据结构而已,用来为诸如WM_PAINT这样的消息决定流动路线。