1. 程式人生 > >MFC宏消息處理機制的原理

MFC宏消息處理機制的原理

creates clas poi basemap 保持 改變 all 機制 int

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

MFC宏消息處理機制的原理