当前位置: 代码迷 >> 综合 >> 孙鑫VC++深入详解:Lesson6 Part1 -- CheckMenuItem,子菜单项上添加位图,禁用子菜单项,删除整个菜单,和加载菜单
  详细解决方案

孙鑫VC++深入详解:Lesson6 Part1 -- CheckMenuItem,子菜单项上添加位图,禁用子菜单项,删除整个菜单,和加载菜单

热度:63   发布时间:2024-01-19 15:19:41.0


//--

  1.    在菜单上加个子菜单TEST,然后在CMainFrame,CMenuApp,CMenuDoc,CMenuView这4个类中都添加响应WM_COMMAND命令消息的OnTest函数

     测试表明

    (1) 只会有一个OnTest能响应

    (2)响应优先级 ,类的顺序是 CMenuView ---> CMenuDoc --->CMainFrame ---> CMenuApp,

           意思是:  CMenuView有OnTest()函数时,就它能响应,其他的都不会响应;  删除 CMenuView中的OnTest(),就只有CMenuDoc中的OnTest响应,其他的都不会响应.


 2   Pop-up菜单项 也就是顶层的"文件","编辑","查看","帮助" 都设置为Pop-up,不能响应COMMAND消息;  TEST没有设置为Pop-up,是可以响应COMMAND命令消息的.


3.    CWnd与CCmdTarget

      (1) CWnd是CCmdTarget的派生类; CCmdTarget是父类,CWnd是子类

      (2) 在MFC类层次结构图中, CCmdTarget下面派生出的类只能响应COMMAND命令消息

      (3) CWnd下面派生出的类 既可以响应COMMAND命令消息也可以响应其他标准消息.

4 COMMAND消息路由 :

      

         MainFrame  ----> View ---> Doc

         App <--- MainFrame <---View <---Doc

5.  菜单的结构,子菜单的概念

6. GetMenu()->GetSubMenu(0),CheckMenuItem,SetDefaultItem等函数的调用......含有MenuItem 肯定是针对 子菜单项


//---


//---

//--


//


//------ 子菜单项勾选函数CheckMenuItem
                            //MenuItem:菜单项就是子菜单下面的各个选项,如"新建","打开","保存"等等.
// GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION|MF_CHECKED);通过索引0访问"新建"菜单项MenuIte

  相关解决方案