MFC 如何生成右键菜单

来源:互联网 发布:mysql创建自增长主键 编辑:程序博客网 时间:2024/06/14 16:04

创建一个基于对话框的应用程序è对话框改名为”创建弹出式菜单”

ResourceView选项卡右击Insert插入一个菜单资源,编辑此菜单资源结果如下:

在对话框的头文件(项目名)Dlg.h中添加声明一个CMenu对象m_Menu

在OnInitDialog方法中调用LoadMenu方法,代码如下:

M_Menu.LoadMenu(IDR_MENU1);    //加载菜单资源

选择ClassView选项卡è右击C菜单项Dlg节点èAdd Windows Handlerè选择WM_RBUTTONUP,此事件在鼠标右键抬起时触发,在该函数中处理右键抬起的事件代码如下: 

void CNonestaticcreatemenuDlg::OnRButtonUp(UINT nFlags, CPoint point) {CMenu *pMenu=m_Menu.GetSubMenu(0);//获得菜单句柄CRect rect;//声明一个CRect对象ClientToScreen(&point);//将客户坐标转换为屏幕坐标rect.top=point.x;//将鼠标当前横坐标作为弹出菜单的左上角坐标rect.left=point.y;//将鼠标当前纵坐标作为弹出菜单的左上角坐标pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_VERTICAL,rect.top,rect.left,this,&rect);//显示弹出菜单CDialog::OnRButtonUp(nFlags, point);//调用基类方法}

在类向导中为每一个菜单项的每一个”菜单项”如”添加文件”处理单击事件.代码如下:

void CNonestaticcreatemenuDlg::OnAdd() {MessageBox(" '添加文件'项被按下");}void CNonestaticcreatemenuDlg::OnDel() {MessageBox(" '删除文件'项被按下");}void CNonestaticcreatemenuDlg::OnEdit() {MessageBox(" '编辑文件'项被按下");}void CNonestaticcreatemenuDlg::Onsearch() {MessageBox(" '查找文件'项被按下");}void CNonestaticcreatemenuDlg::OnExit() {CDialog::OnCancel();}

运行结果如下:





原创粉丝点击