VC菜单操作

基本上的所有的菜单相关都需要找到指针或是ID号,首先说一下获取指针的方法

获取菜单指针

   CMenu* pMenu = AfxGetMainWnd()->GetMenu();

   GetMenu()后面还可以这样写获得菜单项的指针  GetMenu()->GetSubMenu(0)->。。。。

  

下面是一个菜单常用的设置

设置1  设置菜单默认项 加黑显示

   GetMenu()->GetSubMenu(0)->SetDefaultItem(1,TRUE); // 把子菜单中的菜单项设置为默认

设置2  设置菜单选中  前面打勾(下面有两种方法能达到一个结果)

   GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION | MF_CHECKED); //用索引的方法设置
   GetMenu()->GetSubMenu(0)->CheckMenuItem(ID_FILE_NEW,MF_BYCOMMAND | MF_CHECKED);//用ID号的设置

设置3  设置菜单项前面的图标 (注:图标的大小要在13*13像素点范围内 要不然会显示不全的)

  m_bitmap.LoadBitmap(IDB_BITMAP1);//载入图标 我们自己花的 ID号为IDB_BITMAP1
  GetMenu()->GetSubMenu(0)->SetMenuItemBitmaps(0,MF_BYPOSITION,&m_bitmap,&m_bitmap);

设置4 屏蔽菜单项  有两种方法推荐第二种 (但是第二种只能设置弹出项)

方法一

1.这个首先把这行代码 赋值到  m_bAutoMenuEnable=FALSE;  CMainFrame::CMainFrame()函数中 主要是因为命令更新机制决定

2.添加 GetMenu()->GetSubMenu(0)->EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);

上面这样做完虽然可以达到目的 但是菜单不会制动更新

方法二

1、添加类向导(可以用ctrl+w )给菜单项加 新的消息响应 选择第二个 UPdata CMD。。。

2、在新的消息响应函数里面添加这样两句话

if(ID_FILE_NEW==pCmdUI->m_nID)
    pCmdUI->Enable(FALSE);

注意:第一个if也可以不用写的,足以用的时候修改  ID_FILE_NEW 因为这里面是屏幕新建文件 要根据具情况更改

        如果想让菜单项激活吧上面的FALSE改成TRUE 就可以了

 还有更过操作做如请看孙新的饿视频教程

1、添加动态菜单 就是直接用代码添加 看 lesson6G

原文地址:https://www.cnblogs.com/LJWJL/p/2711037.html