MFC对话框添加菜单栏

来源:互联网 发布:极射赤平投影软件 编辑:程序博客网 时间:2024/04/29 13:02

                                              添加菜单栏步骤

菜单栏CMenu:
1、添加菜单
   1、在资源文件中 添加Menu资源,确定ID
   2、可在Menu上插入相关菜单
2、绑定对话框
   在资源文件中找到对话框Dialog,在其属性上,添加Menu的ID
3、添加菜单响应函数
   两种方法
     1、在项目-类向导上,确定类名后,在命令-对象上找到相应菜单Id
        如:ID_Menu_OpenFile. 添加COMMAND消息就好。
     2、在资源文件Menu上,直接双击此菜单即可。
4、在对话框设置菜单状态:
   CMenu *menu = GetMenu();
    if(isOpenFile){
        menu->EnableMenuItem(ID_OpenFile_Menu, MF_GRAYED);
        menu->EnableMenuItem(ID_CloseFile_Menu, MF_ENABLED);
        menu->EnableMenuItem(ID_PicEdit_Menu, MF_ENABLED);
    } else{
        menu->EnableMenuItem(ID_OpenFile_Menu, MF_ENABLED);
        menu->EnableMenuItem(ID_CloseFile_Menu, MF_GRAYED);
        menu->EnableMenuItem(ID_PicEdit_Menu, MF_GRAYED);
    }
5、添加浮点菜单
   CMenu *pMenu, Menu;
   Menu.LoadMenu(IDR_MENU2);
   pMenu = Menu.GetSubMenu(0);
   ClientToScreen(&mousePos); //mousePos为位置
   pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, mousePos.x, mousePos.y, this);

6、添加菜单快捷方式
   1、菜单上的提示,在菜单命名时,可加\tCtrl+O,如:打开文件\tCtrl+O
   2、在资源文件中添加:Accelerator快捷资源,然后编辑:
      在ID栏填写所需要快捷的菜单ID,修饰符、键 自行编辑
   3、在对话框类上,添加快捷键变量:HACCEL mhAccel;
   4、在类的成员函数OnInitDialog()中添加:
      hAccel = ::LoadAccelerators(AfxGetInstanceHandle(),
                                  MAKEINTRESOURCE(IDR_ACCELERATOR1));
   5、在PreTranslateMessage(MSG* pMsg)函数中,添加:
          if(::TranslateAccelerator(GetSafeHwnd(),mhAccel,pMsg))
        return TRUE;


0 0
原创粉丝点击