MFC菜单的使用
  TEZNKK3IfmPf 2023年11月14日 23 0

1、  创建弹出菜单:

(1)、利用向导,创建一个基于单文档的应用程序;

(2)、在资源视图中选中”menu”,鼠标右键插入一新菜单IDR_POPMENU;

(3)、在IDR_POPMENU菜单中添加”弹出菜单”选项,在”弹出菜单”下添加菜单命令”复制”、”粘贴”、”查找”、”测试”,分别修改其ID;

(4)、分别对四个选项,添加消息处理函数,选中某选项,鼠标右键单击,选择Add Event Handler,类的类型选中view,消息类型选择COMMAND;

(5)、选择Class View,选中view类,添加鼠标右键单击消息;

(6)、在此右键单击消息中添加如下代码即可:

CMenu   menu;

        menu.LoadMenu(IDR_POPMENU);

        CMenu   *pContextMenu=menu.GetSubMenu(0);

pContextMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x, point.y, AfxGetMainWnd());

2、创建动态菜单:

(1)、利用向导,创建一个基于单文档的应用程序;

(2)、在资源视图中选中”menu”,鼠标右键插入一新菜单IDR_DYN;

(3)、在IDR_DYN菜单中添加”动态菜单”选项,在”动态菜单”下添加菜单命令”FIRST动态菜单”、”SECOND动态菜单”,分别修改其ID;

(4)、分别对两个选项,添加消息处理函数,选中某选项,鼠标右键单击,选择Add Event Handler,类的类型选中CMainFrame,消息类型选择COMMAND;

(5)、在资源视图中,定位到IDR_MAINFRAME主菜单,添加新项”动态菜单演示”选项,在”动态菜单演示”下添加两个新项”添加动态菜单”、”删除动态菜单”,修改ID;

(6)、添加”添加动态菜单”消息处理函数,类的类型选中CMainFrame,消息类型选择COMMAND;添加如下代码:

    CMenu m_addMenu,*m_pMainmenu;

    if (!m_addMenu.LoadMenu(IDR_DYN))

    {

       MessageBox(_T("动态菜单装入失败!"),_T("错误"),MB_OK|MB_ICONERROR);

       return;

    }

    CString str=_T("自己的动态菜单(&D)");

    m_pMainmenu=AfxGetMainWnd()->GetMenu();

m_pMainmenu->InsertMenu(1,MF_POPUP|MF_BYPOSITION|MF_STRING,(UINT)m_addMenu.GetSubMenu(0)->m_hMenu,str);

    m_pMainmenu->Detach();

    m_addMenu.Detach();

DrawMenuBar();

(7)添加”删除动态菜单”消息处理函数,类的类型选中CMainFrame,消息类型选择COMMAND;添加如下代码:

    CMenu *m_pMainmenu;

    CString str;

    m_pMainmenu=AfxGetMainWnd()->GetMenu();

    for (int i=m_pMainmenu->GetMenuItemCount()-1;i>=0;i--)

    {

       m_pMainmenu->GetMenuString(i, str,MF_BYPOSITION);

       if (str==_T("自己的动态菜单(&D)"))

       {

           m_pMainmenu->DeleteMenu(i,MF_BYPOSITION);

           break;

       }

    }

    m_pMainmenu->Detach();

DrawMenuBar();

3、创建若干对话框的菜单

(1)、利用向导,创建一个基于对话框的应用程序;

(2)、选中资源视图,鼠标右键插入ResourceàMenu,ID为IDR_DLG_MENU;

(3)、为IDR_DLG_MENU添加项目”对话框菜单”,然后在该项目下添加”文件菜单”、”运行记事本菜单”、”退出应用程序菜单”,并修改其ID;

(4)、在对话框属性窗口中选中menu,设置为IDR_DLG_MENU;

(5)、分别对三个选项,添加消息处理函数,选中某选项,鼠标右键单击,选择Add Event Handler,类的类型选中Dlg类,消息类型选择COMMAND;

(6)、在”运行记事本菜单”消息处理函数中,添加如下代码:

::ShellExecute(this->m_hWnd, "open","NOTEPAD.EXE", NULL,NULL, SW_SHOWNORMAL);

(7)、在”退出应用程序菜单”消息处理函数中,添加如下代码:

OnOK();

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

TEZNKK3IfmPf