vc++深入详解第六章

来源:互联网 发布:手机淘宝店铺首页红包 编辑:程序博客网 时间:2024/05/17 09:21

        没有做详细的总结,因为我觉得很多时候只要跟着敲代码就可以了,并没有太多需要注意的地方,只列出几个点。

  1.菜单命令消息路由:框架类(不响应)--视类(根据消息映射机制判断是否相应,否交给文档类)--文档类(根据消息映射机制判断是否相应,否交给文档类)--视类(直接交还框架类)--框架类(根据消息映射机制判断是否相应,否交给应用程序类)--应用程序类


  2.再动态添加菜单是,需要创建一个CMenu类的变量用于创建菜单,当其不定义为CMainFrame类的成员变量时,因为这个变量是局部变量,当它的生命周期结束后,系统会销毁这个变量,这是不合理的。可以再创建好菜单后调用CMenu类的成员函数Detach()来将菜单句柄与菜单分离,这样当这个局部菜单对象生命周期结束时,就不会去销毁一个它不具有拥有权的菜单。


  3.vs2010中,在CMainFrame::OnCreate()函数中调用GetMenu()无法得到菜单指针。上网查了很久,只在在msdn论坛上看到如此的解决方法:VS2010建的SDI/MDI与之前的不一样,是类似BCG的一些东西,所以用之前的方法GetMenu()得到CMenu是NULL或者无效。您可以在CMainFrame类中找到CMFCMenuBar m_wndMenuBar;这个成员变量,如果您将跟它相关的代码注释掉的话,然后再试试GetMenu()函数看看。
  

原创粉丝点击