相关文章推荐
欢快的青蛙  ·  WPF ...·  8 月前    · 
刀枪不入的生姜  ·  Python ...·  1 年前    · 
英俊的大象  ·  Databricks Runtime ...·  1 年前    · 

获取菜单指针

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