MFC右键弹出菜单,并添加响应函数

遇到问题:

添加右键弹出菜单,并添加响应函数,点击菜单项却进不响应函数。

实现步骤:
1、新建一个菜单资源,IDR_TOOL_MENU。

2、在ClassWizard中

void CDlgTool::OnRButtonUp(UINT nFlags, CPoint point) 
{

CMenu menu; //定义下面要用到的cmenu对象
menu.LoadMenu(IDR_TOOL_MENU); //装载自定义的右键菜单 
CMenu *pPopup = menu.GetSubMenu(0); //获取第一个弹出菜单,所以第一个菜单必须有子菜单

 
CPoint point1;//定义一个用于确定光标位置的位置 
GetCursorPos(&point1);//获取当前光标的位置,以便使得菜单可以跟随光标 

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

CDialog::OnRButtonDown(nFlags, point1);
}
这时,当右键点击对话框,就可以将菜单调出来了,接下来是添加响应函数。


3、在资源视图中右键单击菜单项,选择添加事件处理程序。


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

ON_COMMAND(ID_TOOL_DEL, &CDlgTool::OnToolDel)/

void CDlgTool::OnToolDel() 
{

AfxMessageBox("成功!"); 
}


发现问题:

在上述步骤二中,

pPopup ->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point1.x,point1.y,this);

this表示点击菜单的消息传递到本对话框,相应的改变其值也可以传递到其它对象。如GetParent(),传递到父对话框中。



你可能感兴趣的:(MFC右键弹出菜单,并添加响应函数)