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 } };
//jjhou copyright
{
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 } };
//jjhou copyright
解决方案 »
- VC++
- 为什么VC++总是报错(error C2143: syntax error : missing ';' before '}')
- 关于GetModuleFileName第一个参数使用的问题
- 输出一句话有多少种方法?
- 请问有没有完全免费键盘记录程序
- 难题!关于一般进程和服务进程的内存文件映射的问题。
- 提问关于Windows的几种消息原理。
- CoCreateInstanceEx函数怎么使用?
- 用Winsocks编程,不同的操作系统间能否传递数据?
- 请问MFC开发COM的时候,COM组件内部可以创建线程吗?
- 为什么在对话框程序的PreTranslateMessage里面显示一个模态对话框会出错?关注!!!
- feof()函数究竟是做什么的?
MFC之所以这样做,主要是考虑到使用虚函数会造成过大的系统开销。以上只是实现的简单原理,详细过程你还是去看MFC的源代码吧。我个人认为,MFC在消息处理这事上,做得还是相当漂亮。