我最近看候杰的《深入浅出MFC》,对宏定义不是很了解,能帮我给如下的代码写上注释吗?
struct AFX_MSGMAP_ENTRY;      struct AFX_MSGMAP
{
        AFX_MSGMAP* pBaseMessageMap;
        AFX_MSGMAP_ENTRY* lpEntries;
};#define DECLARE_MESSAGE_MAP() \
        static AFX_MSGMAP_ENTRY _messageEntries[]; \
        static AFX_MSGMAP messageMap; \
        virtual AFX_MSGMAP* GetMessageMap() const;#define BEGIN_MESSAGE_MAP(theClass, baseClass) \
        AFX_MSGMAP* theClass::GetMessageMap() const \
                { return &theClass::messageMap; } \
        AFX_MSGMAP theClass::messageMap = \
        { &(baseClass::messageMap), \
                (AFX_MSGMAP_ENTRY*) &(theClass::_messageEntries) }; \
        AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \
        {#define END_MESSAGE_MAP() \
        { 0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 } \
        };
还有每行代码后面的“\”表示什么?

解决方案 »

  1.   

    在使用的时候一般是先BEGIN_MESSAGE_MAP,然后加入各个消息处理后,然后用END_MESSAGE_MAP() 
    这样这个宏展开以后也就变成了:
            AFX_MSGMAP* theClass::GetMessageMap() const \
                    { return &theClass::messageMap; } \
            AFX_MSGMAP theClass::messageMap = \
            { &(baseClass::messageMap), \
                    (AFX_MSGMAP_ENTRY*) &(theClass::_messageEntries) }; \
            AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \
            {
    //以上是BEGIN_MESSAGE_MAP
    //此处是加上的各个消息或者函数的声明
    //一下是END_MESSAGE_MAP()
            { 0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 } \
            };