图形标记菜单

标记菜单:就是菜单项前面打勾的就是标记菜单;

算法:

第一步:找到整个菜单栏,是包括文件、编辑、查看、菜单、帮助;

GetMenu();

第二步:找到其中一个子菜单,比如文件;

GetSunMenu();

第三步:找到其中一个子菜单项,比如新建;

CheckMenuItem(0,MF_BYPOSITION | MF_CHECKED);

★注意:子菜单是有索引号的;

★注意:子菜单项可以通过索引号和ID号去访问;

 

注意:CBitmap m_bitmap;要设置为CMainFrame类的成员变量;

注意:图形标记菜单里面的位图尺寸要比较小的;

 

程序如下:

m_bitmap.LoadBitmap(IDB_BITMAP1);

GetMenu()->GetSubMenu(0)->SetMenuItemBitmaps(0,MF_BYPOSITION,&m_bitmap,&m_bitmap);

这个程序位置仍旧在CMainFrame类里面的onCreate函数里面;

 

以下代码可以帮助我们获取菜单的大小,帮助我们设置位图的大小;

      CString str;

      str.Format("x=%d, y=%d", GetSystemMetrics(SM_CXMENUCHECK),GetSystemMetrics(SM_CYMENUCHECK));

      MessageBox(str);

     如果位图太大,会看不到文字的;

 

屏蔽菜单

功能:使子菜单项打开变灰失效;

注意:(必须要求的,否则屏蔽失败)

需要在CMainFrame::CMainFrame()中设置m_bAutoMenuEnable=FALSE;

程序如下:

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

 

取消菜单栏

SetMenu(NULL);//取消菜单栏

加载菜单栏

     CMenu menu;

     menu.LoadMenu(IDR_MAINFRAME);

     SetMenu(&menu);

     menu.Detach();//菜单句柄和对象断开,使对象析构时不销毁菜单

 

注意:最后一句话,是为了处理menu这个局部变量可能带来的问题;

当然:你也可以将menu设置为CMainFrame类的成员变量;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值