Visual C++ 菜单

来源:互联网 发布:电脑桌面软件整理 编辑:程序博客网 时间:2024/06/03 21:46

2.1 如何动态添加和删除菜单项

  1. AppendMenu
  2. InsertMenu
  3. DeleteMenu
/////////////////////////////////////////////////////////////////////////////// CMainFrame message handlersvoid CMainFrame::OnAppendMenu() {    //获得主菜单    CMenu* pMenu = GetMenu();    //获得子菜单    CMenu* pSubMenu = pMenu->GetSubMenu(4);    if (pSubMenu->GetMenuItemCount() == 4)    {        //在菜单末端添加菜单项        pSubMenu->AppendMenu(MF_STRING, ID_TEST_MENU, _T("新菜单项"));        //重画菜单        DrawMenuBar();    }}void CMainFrame::OnInsertMenu() {    //获得主菜单    CMenu* pMenu = GetMenu();    //获得子菜单    CMenu* pSubMenu = pMenu->GetSubMenu(4);    if (pSubMenu->GetMenuItemCount() == 4)    {        //在菜单指定位置添加菜单项        pSubMenu->InsertMenu(4, MF_BYPOSITION, ID_TEST_MENU, _T("新菜单项"));        //重画菜单        DrawMenuBar();    }}void CMainFrame::OnRemoveMenu() {    //获得主菜单    CMenu* pMenu = GetMenu();    //获得子菜单    CMenu* pSubMenu = pMenu->GetSubMenu(4);    if (pSubMenu->GetMenuItemCount() == 5)    {         //删除菜单项         pSubMenu->RemoveMenu(4, MF_BYPOSITION);        //重画菜单        DrawMenuBar();    }}void CMainFrame::OnDeleteMenu() {    //获得主菜单    CMenu* pMenu = GetMenu();    //获得子菜单    CMenu* pSubMenu = pMenu->GetSubMenu(4);    if (pSubMenu->GetMenuItemCount() == 5)    {         //删除菜单项         pSubMenu->DeleteMenu(4, MF_BYPOSITION);        //重画菜单        DrawMenuBar();    }}void CMainFrame::OnTestMenu() {    AfxMessageBox(_T("测试菜单项命令"));    }

 

2.2 如何在系统菜单中添加菜单项

  1. GetSystemMenu
//获得系统菜单CMenu* pMenu = GetSystemMenu(FALSE);//删除系统菜单项pMenu->RemoveMenu(SC_MOVE, MF_STRING);//添加菜单项pMenu->InsertMenu(0, MF_BYPOSITION, ID_TEST_MENU, _T("测试菜单项"));//重画菜单DrawMenuBar();

 

2.3 如何禁用关闭按钮

  1. EnableMenuItem
//获得系统菜单CMenu* pMenu = GetSystemMenu(FALSE);//禁用关闭按钮pMenu->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND | MF_GRAYED);

 

2.4 如何启用和禁用菜单项

CCmdUI的Enable方法

void CMainFrame::OnTestMenu1() {    m_bEnable1 = FALSE;    m_bEnable2 = TRUE;}void CMainFrame::OnUpdateTestMenu1(CCmdUI* pCmdUI) {    //启用或禁用菜单1    pCmdUI->Enable(m_bEnable1);    }void CMainFrame::OnTestMenu2() {    m_bEnable1 = TRUE;    m_bEnable2 = FALSE;    }void CMainFrame::OnUpdateTestMenu2(CCmdUI* pCmdUI) {    //启用或禁用菜单2    pCmdUI->Enable(m_bEnable2);}

2.5 如何设置菜单项的检查状态

SetCheck方法

void CMainFrame::OnUpdateTestMenu(CCmdUI* pCmdUI) {    //设置菜单项检查状态    pCmdUI->SetCheck(m_nCheck);    }

image

2.6 如何实现快捷菜单

即右键菜单ContextMenu

void CDemoView::OnContextMenu(CWnd* pWnd, CPoint point) {    CMenu menu;    //加载菜单    if (!menu.LoadMenu(IDR_MENU))    {        return;    }    //获得子菜单    CMenu* pPopupMenu = menu.GetSubMenu(0);    //弹出菜单    pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,         point.x, point.y, pWnd);  }void CDemoView::OnTestMenu1() {    AfxMessageBox(_T("快捷菜单项1命令"));}void CDemoView::OnTestMenu2() {    AfxMessageBox(_T("快捷菜单项2命令"));}
0 0
原创粉丝点击