您的位置:首页 > 其它

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

2007-04-09 21:16 337 查看
所谓路由即是点击菜单某一项时,程序响应的顺序。

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来进行多项选择




}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: