`
wgq837051
  • 浏览: 86063 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

菜单操作

阅读更多

//标记菜单
 //GetMenu()->GetSubMenu(0)->CheckMenuItem(2,MF_BYPOSITION |MF_CHECKED);//索引方式
 //GetMenu()获得菜单CMenu对象指针,
 GetMenu()->GetSubMenu(0)->CheckMenuItem(ID_FILE_SAVE,MF_BYCOMMAND |MF_CHECKED);//ID方式

 //默认菜单项
 //GetMenu()->GetSubMenu(0)->SetDefaultItem(1,TRUE);//索引方式
 GetMenu()->GetSubMenu(0)->SetDefaultItem(ID_FILE_OPEN,FALSE);//ID方式
 //注:一个子菜单项只能有一个默认菜单项

 //创建位图菜单
/* CString str;
 str.Format("x=%d  y=%d",GetSystemMetrics(SM_CXMENUCHECK),//获取系统信息:选择菜单位图大小
   GetSystemMetrics(SM_CYMENUCHECK));
 MessageBox(str); */
 m_map1.LoadBitmap(IDB_BITMAP1);
 m_map2.LoadBitmap (IDB_BITMAP2);
 GetMenu()->GetSubMenu(0)->SetMenuItemBitmaps(2,MF_BYPOSITION,&m_map1,&m_map2);

 //将一个菜单项设为无效且变灰
 GetMenu()->GetSubMenu(0)->EnableMenuItem(1,MF_BYPOSITION|MF_DISABLED|MF_GRAYED);
 //必须在CMainFrame的构造中加入m_bAutoMenuEnable = FALSE;才能生效


 SetMenu(NULL);//去掉一个菜单
 CMenu menu;//此处的定义应为全局变量,否则用menu.Detach()将资源与对象断开
 menu.LoadMenu(IDR_MAINFRAME);
 SetMenu(&menu);//重新显示一个菜单
 menu.Detach();//将资源与对象断开

//命令更新机制
void CMainFrame::OnUpdateFileSaveAs(CCmdUI* pCmdUI)
{
 if(ID_FILE_SAVE_AS==pCmdUI->m_nID)//两种方式
  pCmdUI->Enable( FALSE);
 if(3==pCmdUI->m_nIndex)
  pCmdUI->Enable(TRUE);
 
}

//弹出式菜单的建立
void CLesson3View::OnRButtonDown(UINT nFlags, CPoint point)
{
 // TODO: Add your message handler code here and/or call default
 CMenu menu;
 menu.LoadMenu(IDR_MENU1);
 ClientToScreen(&point);  //将客户区坐标转换为screen坐标
 CMenu* pmenu=menu.GetSubMenu(0);
 pmenu->TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON,point.x,point.y,this);//显示菜单
 
 CView::OnRButtonDown(nFlags, point);
}

//动态菜单操作
 CMenu submenu;
 submenu.CreatePopupMenu();//创建子菜单
 //GetMenu()->AppendMenu(MF_POPUP,(UINT)submenu.m_hMenu,"popmenu" );//添加一个子菜单
 GetMenu()->InsertMenu(2,MF_BYPOSITION | MF_POPUP,
     (UINT)submenu.m_hMenu ,"popmenu");//插入一个子菜单
 submenu.AppendMenu(MF_STRING,1101,"MENU1");//添加菜单项
 submenu.AppendMenu(MF_STRING,1102,"MENU2");
 submenu.AppendMenu(MF_STRING,1103,"MENU3");
 submenu.Detach();

 GetMenu()->GetSubMenu(0)->AppendMenu(MF_STRING,114,"MENU4");
 GetMenu()->GetSubMenu(0)->InsertMenu(1,MF_BYPOSITION| MF_STRING,115,"MENU5");

 GetMenu()->DeleteMenu(1,MF_BYPOSITION);//删除一个子菜单
 GetMenu()->GetSubMenu(0)->DeleteMenu(2,MF_BYPOSITION);//删除一个菜单项
 DrawMenuBar(); //重画菜单栏
 Invalidate();//设客户区为无效,而引起重


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/JidanIt/archive/2008/07/17/2664140.aspx

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics