MFC中菜单响应函数如何创建

 我来答
bdzdlj2062
高粉答主

推荐于2018-11-25 · 繁杂信息太多,你要学会辨别
知道大有可为答主
回答量:1.1万
采纳率:3%
帮助的人:2270万
展开全部
  MFC基于对话框——右键弹出菜单,并响应函数。
  1、新建一个菜单资源,比如把菜单的ID号为IDR_MENU1。

  2、在ClassWizard中

  void CArcSoft_EffectDlg::OnRButtonDown(UINT nFlags, CPoint point)

  {// TODO: Add your message handler code here and/or call default
  CMenu menu; //定义下面要用到的cmenu对象

  menu.LoadMenu(IDR_MENU1); //装载自定义的右键菜单;

  CMenu *pContextMenu=menu.GetSubMenu(0); //获取第一个弹出菜单,所以第一个菜单必须有子菜单;

  CPoint point1;//定义一个用于确定光标位置的位置;

  GetCursorPos(&point1);//获取当前光标的位置,以便使得菜单可以跟随光标

  pContextMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point1.x,point1.y,AfxGetMainWnd()); //在指定位置显示弹出菜单;

  CDialog::OnRButtonDown(nFlags, point1)};

  这时,当右键点击对话框,就可以将菜单调出来了,如何响应菜单项有如下操作:
  3、在资源视图中右键单击菜单项,建立类向导(ClassWizard),此时会弹出一个对话框,点击第二个,加入到已存在的类,按确定。

  4、在资源视图中为菜单中的每一项建立类向导,并添加Command响应函数,然后在这个函数中加入语句就可以啦。

  ON_COMMAND(ID_COPY, OnCopy)//加Command响应函数,自动出现的灰色语句

  void CArcSoft_EffectDlg::OnCopy()
  {// TODO: Add your command handler code here
  MessageBox("复制成功!");

  MFC文档的菜单栏中添加一个command响应函数

  基于CFormView的应用程序,经常会在菜单栏中添加一个按钮,点击该按钮时,会弹出一个对话框~~
  具体实现方式如下

  1.新建一个对话框资源,同时新建一个对话框类和该资源对应,舍对话框类名为CTestDialog;

  2.在资源视图中找到Menu 这个文件夹,双击里面的文件IDR_MAINFRAME,在这里可以添加自己想要的菜单,也可把原来的【文件】、【编辑】等菜单给删掉~~

  添加菜单的方法:右击右侧空白区域,选择properties,弹出的对话框中,把pop_up勾选掉,添加一个ID和CAPTION,设ID为ID_MYTEST,caption|为【测试】

  (要注意的是,最好选择View类,而不是Frame类或其他类)

  3.Ctrl+W弹出类向导,message maps中的class name 选择为View类,

  从Object IDs中找到我们上一步设置的ID_MYTEST,右侧的message选择Command命令,添加一个命令响应函数;

  4.在该函数中添加

  CTestDialog dlg;

  dlg.DoModal();

  5.对应的菜单项添加WM_COMMAND消息,在命令响应函数中DoModal/Create/ShowWindow()你的对话框即可。

  6.消息映射:

  ON_COMMAND(菜单编号,处理函数)

  .h

  public:

  处理函数

  .cpp

  处理函数

  {

  CDialog dc;

  dc.domodal();

  }

  弹出非模态对话框的方法:

  (1)用类向导给菜单栏中菜单添加一个响应函数

  (2) 在头文件中加入

  #include "Dlg.h"

  public:

  CDlg *Dlg;

  (3)在代码中加入

  Dlg=new CDlg(this);

  Dlg->Create(IDD_DIALOG1); // IDD_DIALOG1为对应的菜单栏中那个按钮的ID

  Dlg->ShowWindow(SW_RESTORE);
bhtzu
2012-07-03 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4236万
展开全部
菜单资源中,对相应的菜单项右键——ClassWizard,就可以了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式