CMenu 类操作

 //针对同一个菜单响应在四个类共有一个响应函数时候,他们的先后顺序是View类,Doc类,MainFrame类,App类。
   //Doc类 App类不是从CWdn派生来的
   // CClientDC dc(this);
   //GetMenu()->GetSubMenu(0)->SetDefaultItem(1,TRUE);//默认菜单
    //SetDefaultItem它也有两个参数,第一个参数也是由第二个参数来决定的,第二个参数是FALSE,第一个参数它就是菜单项的标识,
    //否则就是菜单项的位置。它也提供了两种方式,一种是索引,一种是按菜单项的ID,默认是false
    //GetMenu()->GetSubMenu(0)->SetDefaultItem(ID_FILE_OPEN);
    //两种方法
  //GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION|MF_CHECKED);
  //GetMenu()->GetSubMenu(0)->CheckMenuItem(ID_FILE_NEW,MF_BYCOMMAND|MF_CHECKED);
     //禁用菜单 需要在默认构造函数设置m_bAutoMenuEnable=FALSE; 才能生效
    //注意 MF_DISABLED|MF_GRAYED 菜单变灰或者无效 单独使用MF_DISABLED 菜单无效 但不变灰
    //MF_GRAYED 菜单无效 而且变灰     

    GetMenu()->GetSubMenu(0)->EnableMenuItem(1,MF_BYPOSITION|MF_DISABLED|MF_GRAYED);

//GetMenu()->GetSubMenu(0)->EnableMenuItem(1,MF_BYPOSITION|MF_DISABLED|MF_GRAYED);
    //设置菜单图标 设置个全局变量CBitemaps
    m_bitemap.LoadBitmap(IDB_BITMAP1);
    GetMenu()->GetSubMenu(0)->SetMenuItemBitmaps(1,MF_BYPOSITION,&m_bitemap,&m_bitemap);
    //图标没有出现 需要设置图标大小 vs2012 不用设置 也会显示
    /*
    CString str;
    str.Format("x=%d,y=%d",GetSystemMetrics(SM_CXMENUCHECK),GetSystemMetrics(SM_CYMENUCHECK));
    MessageBox(str);
    */
    //SetMenu(NULL);
    //CMenu menu;
    //menu.LoadMenu(IDR_MAINFRAME);
    //SetMenu(&menu);
    /*当我们建立了一个局部的菜单对象后,比如 在一个窗口类的函数里建立了一个局部菜单对象,
    当这个窗口函数的生命周期结束时,如果不希望菜单对象也被销毁,就要用detach()函数把菜单句柄和这个菜单对象分离。
    这样,当局部的菜单对象被销毁时,它不会销毁一个它不具备拥有权的菜单。*/
    //menu.Detach();


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值