深入浅出mfc,这句什么意思?
在六大仿真技术的消息映射里:#defineDECLARE_MESSAGE_MAP()\public:\staticAFX_MSGMAP_ENTRY_messageEntr...
在六大仿真技术的消息映射里:
#define DECLARE_MESSAGE_MAP() \
public:\
static AFX_MSGMAP_ENTRY _messageEntries[]; \
static AFX_MSGMAP messageMap; \
virtual AFX_MSGMAP* GetMessageMap() const;
。。。
class CCmdTarget : public CObject
{
DECLARE_MESSAGE_MAP()
};
typedef void (CCmdTarget::*AFX_PMSG)(); // 这句什么意思?
如果没有CCmdTarget::的话,这句就是定义一个函数指针的数据类型,该函数不返回值,不接受参数。可加上CCmdTarget::的话,似乎表示这个函数指针指向CCmdTarget类里的一个函数,可CCmdTarget类里就没有一个不接受参数不返回值的函数!
还有在稍后面一点还有这么一句也让人莫名其妙:
typedef void (CWnd::*AFX_PMSGW)(void);
不过这句把它注释掉,程序也能正常运行。
请高手们解释一下。谢谢! 展开
#define DECLARE_MESSAGE_MAP() \
public:\
static AFX_MSGMAP_ENTRY _messageEntries[]; \
static AFX_MSGMAP messageMap; \
virtual AFX_MSGMAP* GetMessageMap() const;
。。。
class CCmdTarget : public CObject
{
DECLARE_MESSAGE_MAP()
};
typedef void (CCmdTarget::*AFX_PMSG)(); // 这句什么意思?
如果没有CCmdTarget::的话,这句就是定义一个函数指针的数据类型,该函数不返回值,不接受参数。可加上CCmdTarget::的话,似乎表示这个函数指针指向CCmdTarget类里的一个函数,可CCmdTarget类里就没有一个不接受参数不返回值的函数!
还有在稍后面一点还有这么一句也让人莫名其妙:
typedef void (CWnd::*AFX_PMSGW)(void);
不过这句把它注释掉,程序也能正常运行。
请高手们解释一下。谢谢! 展开
展开全部
MFC源代码中的注释是这样的:
// pointer to afx_msg member function
typedef void (AFX_MSG_CALL CCmdTarget::*AFX_PMSG)(void);
这里面注意,有个typedef,如果没有,那么就是你说的定义一个函数指针。
但我觉得,加了typedef之后,这个肯定不能简单的这样理解。应该是定义了一个数据类型,这个类型,是无返值无参数的回调函数。理解不一定准确,个人思路。
后面那句,如果你把typedef void (CWnd::*AFX_PMSGA)(void);也注释了,应该就不能城池运行了吧,两个处于不同环境下的定义。一个A,一个W
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询