首先看定义
#define BEGIN_MESSAGE_MAP(theClass, baseClass) /
const AFX_MSGMAP* theClass::GetMessageMap() const /
{ return &theClass::messageMap; } /
AFX_COMDAT AFX_DATADEF const AFX_MSGMAP theClass::messageMap = /
{ &baseClass::messageMap, &theClass::_messageEntries[0] }; /
AFX_COMDAT const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = /
{ /
实际应用BEGIN_MESSAGE_MAP(myview,CView)等价于
const AFX_MSGMAP* myview::GetMessageMap() const /
{ return & myview::messageMap; } /
AFX_COMDAT AFX_DATADEF const AFX_MSGMAP myview::messageMap = /
{ & CView::messageMap, & myview::_messageEntries[0] }; /
AFX_COMDAT const AFX_MSGMAP_ENTRY myview::_messageEntries[] = /
{ /
还有END_MESSAGE_MAP和BEGIN_MESSAGE_MAP是成对出现的
#define END_MESSAGE_MAP() /
{0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 } /
}; /
整个程序改成如下:
#include <afxwin.h>
#include <afxext.h>
#include "resource.h"