MFC中的afx_msg和BEGIN_MESSAGE_MAP

BEGIN_MESSAGE_MAP 下面是定义:什么事件发生时该执行哪个子程序。

是MFC定义的宏,表示开始一个消息的映射描述。  
   
   
  BEGIN_MESSAGE_MAP(   theClass,   baseClass   )  
   
  Parameters  
   
  theClass  
   
  Specifies   the   name   of   the   class   whose   message   map   this   is.  
   
  baseClass  
   
  Specifies   the   name   of   the   base   class   of   theClass  
   
  Remarks  
   
  Use   the   BEGIN_MESSAGE_MAP   macro   to   begin   the   definition   of   your   message   map.  
   
  In   the   implementation   (.CPP)   file   that   defines   the   member   functions   for   your   class,   start   the   message   map   with   the   BEGIN_MESSAGE_MAP   macro,   then   add   macro   entries   for   each   of   your   message-handler   functions,   and   complete   the   message   map   with   the   END_MESSAGE_MAP   macro.  
   
  For   more   information   on   message   maps   and   the   BEGIN_MESSAGE_MAP   macro,   seeAdding   a   Dialog   Box   in   Visual   C++   Tutorials.  
   
  Example  
   
  //   example   for   BEGIN_MESSAGE_MAP  
  BEGIN_MESSAGE_MAP(   CMyWindow,   CFrameWnd   )  
        //{{AFX_MSG_MAP(   CMyWindow   )  
          ON_WM_PAINT()  
          ON_COMMAND(   IDM_ABOUT,   OnAbout   )  
        //}}AFX_MSG_MAP  
  END_MESSAGE_MAP(   )  

在相应的.cpp中写入这样的消息映射之前,要在相应的类中用 afx_msg 声明某个函数是消息映射函数

如在类class CExample1Dlg : public CDialog的头文件中添加:

afx_msg LRESULT OnServerMessage(WPARAM wParam,LPARAM lParam);

在.cpp文件中添加:ON_MESSAGE(SER_MESSAGE,OnServerMessage)

然后就在其.cpp文件中写好关于OnServerMessage()的定义函数.

但是在本例中SER_MESSAGE没有事先定义一个消息映射

要在类class CExample1Dlg : public CDialog的头文件中定义一个消息映射号如

#define SER_MESSAGE WM_USER+100

才可以实现消息的映射和响应.

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭