MFC学习点滴二:MFC中的菜单路由

来源:互联网 发布:数控折弯机如何编程 编辑:程序博客网 时间:2024/04/19 14:44

所谓路由即是点击菜单某一项时,程序响应的顺序。

1     一般情况下。最先捕捉到菜单点击消息的是Frame类,(在Frame类中可以直接使用GetMenu() ,

        而在View类中,要使用GetParent()->GetMenu()来获取系统菜单的指针。)但Frame类并不作出相应,

        它会交给View类来处理,如果View类中有相应处理函数,则处理,路由结束。

        否则View类会把消息交给Doc文档类来处理,如果文档类有相应的处理,则结束。

        否则文档类会重新递交给View类,View类再交给Frame类,这时如果Frame类中有相应处理,则结束

        否则会接着给到程序类App类中,如果App类中还没有处理,则交给操作系统。

 

2     也可以截断这种默认的路由,直接由Frame类来截获消息并执行。由于Frame类中的OnCommand是个

       虚函数,如果我们重写它,并不再调用基类的OnCommand,那么路由只是在Frame中这里就结束了。

 

BOOL CMainFrame::OnCommand(WPARAM wParam  , LPARAM lParam)
{
               
//我们可以设置一个int来接受wParam,以此判断相应的是哪一个ID项
       int    nID   =   LOWORD(wParam);
              
//如果nID是我们菜单的ID值,比如  nID == ID_FILE_NEW  那么做出相应的处理
       if(nID  ==  ID_FILE_NEW)
              
{
                          
// Do something
              }
 
              
//当然也可以用switch来进行多项选择

}