Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 当开始消息映射被写为开始消息映射(类,祖父母类)时会发生什么?_C++_Windows_Mfc - Fatal编程技术网

C++ 当开始消息映射被写为开始消息映射(类,祖父母类)时会发生什么?

C++ 当开始消息映射被写为开始消息映射(类,祖父母类)时会发生什么?,c++,windows,mfc,C++,Windows,Mfc,我遇到了一段代码,其中类的BEGIN_MESSAGE_MAP将其祖辈类作为第二个参数。我知道当它是父类时,如果子类不处理消息,它会检查父类是否处理消息。我找不到祖父母班级案例的文档。这种行为相似吗?它会跳过检查父类的消息映射并签入祖辈类吗?BEGIN\u message\u map是一个宏,因此您可以查看扩展的代码并查看它的功能。确切的定义可能因版本而异,但更多的是: #define BEGIN_MESSAGE_MAP(theClass, baseClass) \ const AFX_M

我遇到了一段代码,其中类的BEGIN_MESSAGE_MAP将其祖辈类作为第二个参数。我知道当它是父类时,如果子类不处理消息,它会检查父类是否处理消息。我找不到祖父母班级案例的文档。这种行为相似吗?它会跳过检查父类的消息映射并签入祖辈类吗?

BEGIN\u message\u map
是一个宏,因此您可以查看扩展的代码并查看它的功能。确切的定义可能因版本而异,但更多的是:

#define BEGIN_MESSAGE_MAP(theClass, baseClass) \
    const AFX_MSGMAP* PASCAL theClass::_GetBaseMessageMap() \
        { return &baseClass::messageMap; } \
    const AFX_MSGMAP* theClass::GetMessageMap() const \
        { return &theClass::messageMap; } \
    AFX_COMDAT AFX_DATADEF const AFX_MSGMAP theClass::messageMap = \
    { &theClass::_GetBaseMessageMap, &theClass::_messageEntries[0] }; \
    AFX_COMDAT const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \
    { \
不太容易阅读。。。但是
基类
仅用于返回基图的非虚拟函数
\u GetBaseMessageMap
。作为回报,它用于构建真正的
类::messageMap
的第一部分,即指向完整消息映射部分的指针列表(另一部分是此类的映射)


TL;博士是的,对于未在此类中处理的任何消息,它将跳过父类的映射,直接转到祖辈类的映射。

BEGIN\u message\u map
是一个宏,因此您可以查看扩展的代码并查看它的功能。确切的定义可能因版本而异,但更多的是:

#define BEGIN_MESSAGE_MAP(theClass, baseClass) \
    const AFX_MSGMAP* PASCAL theClass::_GetBaseMessageMap() \
        { return &baseClass::messageMap; } \
    const AFX_MSGMAP* theClass::GetMessageMap() const \
        { return &theClass::messageMap; } \
    AFX_COMDAT AFX_DATADEF const AFX_MSGMAP theClass::messageMap = \
    { &theClass::_GetBaseMessageMap, &theClass::_messageEntries[0] }; \
    AFX_COMDAT const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \
    { \
不太容易阅读。。。但是
基类
仅用于返回基图的非虚拟函数
\u GetBaseMessageMap
。作为回报,它用于构建真正的
类::messageMap
的第一部分,即指向完整消息映射部分的指针列表(另一部分是此类的映射)

TL;博士是的,对于未在此类中处理的任何消息,它将跳过父类的映射,直接转到祖辈类的映射