以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 C/C++编程思想 』 (http://bbs.xml.org.cn/list.asp?boardid=61) ---- VC++中常用的消息映射机制(MFC) (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=87804) |
-- 作者:葛靖青001 -- 发布时间:11/19/2010 10:44:00 AM -- VC++中常用的消息映射机制(MFC) 一、预备工作: 1、定义消息描绘结构: struct AFX_MSGMAP { AFX_MSGMAP* pBaseMessageMap; AFX_MSGMAP_ENTRY* lpEntries; }; 2、定义消息表项实体结构: struct AFX_MSGMAP_ENTRY // MFC 4.0 { UINT nMessage; // windows message UINT nCode; // control code or WM_NOTIFY code UINT nID; // control ID (or 0 for windows messages) UINT nLastID; // used for entries specifying a range of control id's UINT nSig; // signature type (action) or pointer to message # AFX_PMSG pfn; // routine to call (or special value) }; 二、类内声明: #define DECLARE_MESSAGE_MAP() 做了三件事情: 1、声明了该类的消息表数组:_messageEntries[] 2、声明了两个指针:pBaseMessageMap;lpEntries;顾名思义,它们分别指向基类的消息表和该类的消息表。 3、声明了一个函数GetMessageMap() ,顾名思义,它的作用是获得一个指向该类消息表的指针。 三、在.CPP文件中给表项添加具体条目,并实现GetMessageMap() 1、声明函数GetMessageMap() #define BEGIN_MESSAGE_MAP(theClass, baseClass) AFX_MSGMAP* theClass::GetMessageMap() const AFX_MSGMAP theClass::messageMap = AFX_MSGMAP_ENTRY theClass::_messageEntries[] = 诸如COMMAND、PAINT、…… //4、结束消息描绘表: #define END_MESSAGE_MAP() 注意:上面这两个#define是前后呼应的,前一个以“{”为结尾;后一个以“};”为结尾,合而为一才算完整。 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
31.250ms |