MFC深入浅出中的消息映射这一节 
#define ON_COMMAND(id,memberFxn) \
      { WM_COMMAND,0,(WORD)id,(WORD)id,AfxSig_vv,(AFX_PMSG)memberFxn },
#define END_MESSAGE_MAP() \
      { 0,0,0,0,AfxSig_end,(AFX_PMSG)0 }为什么要这样定义 AFX_MSGMAP _messageEntries[];
替换宏之后为 _messageEntries[]=
                  {
                      { WM_COMMAND,0,(WORD)id,(WORD)id,AfxSig_vv,(AFX_PMSG)memberFxn },
                      { 0,0,0,0,AfxSig_end,(AFX_PMSG)0 }
                   };
在_messageEntries[]中只使用了第一个元素,而第二个元素好像没有用,请问为什么还要这样定义

解决方案 »

  1.   

    我想问清楚 别的都理解了 就是这里还有一点小疑问 就是为什么要定义_messageEntries数组 第二个元素好像没用
      

  2.   

    ON_COMMAND 中只关心id,如果id符合,就相应,不关心控件响应的是什么code是什么通知
      

  3.   

    这个是表示结尾啦,因为接下来挖下去就会发现这些消息其实是由一个循环去读取的,总得有个结尾的条件吧,当读到消息为0时(枚举为AfxSig_end),那就说明消息读完了,退出循环,OVER。
    若不如此,怎么才知道消息读完了,因为最后一条消息是未知的呀......