请问:谁能更详细的解释一下BEGIN_MESSAGE_MAP(CMenuView, CView)和END_MESSAGE_MAP()

来源:百度知道 编辑:UC知道 时间:2024/06/27 23:06:38
请问:谁能更详细的解释一下BEGIN_MESSAGE_MAP(CMenuView, CView)和END_MESSAGE_MAP() 具体是什么?是函数还是宏定义?在vc程序体的哪个地方哪个文件定义过?有什么作用?

BEGIN_MESSAGE_MAP(CMenuView, CView)
ON_WM_CONTEXTMENU()
//{{AFX_MSG_MAP(CMenuView)
ON_COMMAND(IDM_TEST, OnTest)
ON_WM_RBUTTONDOWN()
ON_COMMAND(IDM_SHOW, OnShow)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

ON_WM_RBUTTONDOWN() 是消息映射函数吗?这个函数在程序体的哪个地方定义的?它的形参有几个?它们分别是什么?起什么作用?

BEGIN_MESSAGE_MAP(CMenuView, CView)
END_MESSAGE_MAP()
宏定义 简单的讲都是通过宏定义为类添加一个消息/处理函数对组成的数组,而ON_WM_RBUTTONDOWN()也是宏,就是往这个数组中添加一个消息/消息处理函数对而已
细节可参看<<深入浅出MFC>>

是宏,但展开来其实还是一个函数。我们在其中增加的除了MFC默认定义的外(比如ON_WM_RBUTTONDOWN()),其他的基本上都是通过一个宏将对应的消息和你响应此消息的函数指针绑定,你可以分析宏对应的代码,MFC实际上是把这些绑定全部收集到一个数组里。