基本上的所有的菜单相关都需要找到指针或是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