利用向导建立一个MDI程序的时候会自动生成五个类,分别是CxxxApp,CxxxDoc,CxxxView,CMainFrame,CChildFrame,假设菜单中有一个ID_MENU_TEST项,我在Ctrl+W的类向导中选择上述5个不同的类,可以为ID_MENU_TEST创建5个属于不同类的映射函数,任意生成一个都可以被单击菜单项触发,请问分别在这五个类中的五个映射函数有什么区别吗?一般在那个类型创建这个函数?

解决方案 »

  1.   

    通常是在CxxxView中,根据需要也可以放在其他地方。
      

  2.   

    有数据交换
    一般放在CxxxDoc中
    ----
    和显示相关
    ---
    一般放在
    CxxxView中---
    没规定死..
      

  3.   

    一般放在view类中 如果你每个函数里都做了消息响应 他的响应顺序是 View Doc MainFrame App
      

  4.   

    一般放在view类中
    因为消息的响应次序依次为:view doc childframe app mainframe
      

  5.   

    五个映射函数没有有区别.
    放在哪里读可以。
    其实我想lz是想问的是为什么五个类都可以呢,真神了,这消息怎么就那么神通广大,到处"乱跑"呢,这个你得好好看看mfc的源代码了,实际上mfc采用了一种消息链的松耦合方式进行消息传递。消息首先发送到窗口处理过程,窗口处理过程里大概有如下的伪码
      if( !view ->DealMessage(...) )
       {
           if( !doc->DealMessage(...) )
          {
             if( !chidframe ->DealMessage(...) )
              {
                      ......
              }
            }
       }
    通过这种方式mfc把消息传递到整个应用程序的各个部分。