MFC宏消息处理机制的原理

1.1、在MFC中处理消息的函数是固定的,如afx_msg int OnCreate(LPCREATESTRUCT);这是一个固定的,对应于ON_WM_CREAT()宏。如果改变了函数名,对应的宏就会不认识。

1.2、MyCreate函数,用来响应系统的WM_CREATE消息,这些函数是有固定格式要求的。并且函数名必须和MSDN给定的函数名保持完全一致。

1.3、

struct AFX_MSGMAP
{
  const AFX_MSGMAP* (PASCAL* pfnGetBaseMap)(); 
  const AFX_MSGMAP_ENTRY* lpEntries;
};

 

1.4、

struct AFX_MSGMAP_ENTRY
{
  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_PTR nSig;    // signature type (action) or pointer to message #
  AFX_PMSG pfn;   // routine to call (or special value)
};

 

1.5、OnWndMsg();这个函数负责处理消息映射机制宏中的消息。

1.6、

struct AFX_MSG_CACHE

{

  UINT nMsg;

  AFX_MSGMAP_ENTRY *lpEntry;

  AFX_MSGMAP *pMessageMap;

}

 

1.7、AfxFindMessageEntry(pMessageMap->lpEntries, message, 0, 0) != null

  如果,pMessageMap->lpEntries指向的数组中,有message消息,那么该函数返回数组中这个元素的地址,否则返回null

 

posted @ 2017-08-24 13:56  _xiaohaige  阅读(330)  评论(0编辑  收藏  举报