在mfc中 对话框中 如何创建一个右键菜单 我用的是VS2008
我现在有一个listbox控件 我想让其 在list控件中点击鼠标右键时 出现一个菜单
上面有粘贴 复制 功能
请大家说得详细一些 在VS2008 对话框中实现 展开
blue区域不显示contextmenu,橙色范围显示contextmenu
就是当mouse右键点击listbox中的存在项上,才显示contextmenu,其他范围不显示contextmenu.
private void listBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button == MouseButtons.Right)
{
//listBoxItem Total Height
int listBoxItemToTalHeight = listBox1.Items.Count * listBox1.ItemHeight;
int currentIndex = e.Y /12;
if(SqlInt32.Mod(currentIndex,12) == 0)
{
currentIndex = currentIndex;
}
if(e.Y > listBoxItemToTalHeight)
{
this.listBox1.ContextMenu = this.contextMenu1;
contextMenu1.MenuItems[0].Visible = false;
}
else
{
this.listBox1.ContextMenu = this.contextMenu1;
contextMenu1.MenuItems[0].Visible = true;
if(listBox1.SelectedItem != null && currentIndex != listBox1.SelectedIndex)
{
this.listBox1.SetSelected(listBox1.SelectedIndex,false);
}
this.listBox1.SetSelected(currentIndex,true);
this.listBox1.ContextMenu.Show(listBox1,new Point(e.X,e.Y));
}
}
}
菜单可以在资源里面编辑。
具体怎么使用TrackPopupMenu函数可以搜索右键菜单。
void CMyDlgExDlg::OnContextNenu(CWnd* pWnd,CPoint point)
{//使用鼠标右键单击控件
if(pWnd->GetDlgCtrlID()==控件ID号)
{//显示“复制文本”,“粘贴文本”下拉菜单
CMenu MyMenu;
MyMenu.LoadMeun(复制文本菜单ID号);
MyMenu.LoadMeun(粘贴文本菜单ID号);
CMenu*pMyMenu=MyMenu.GetSubMenu(1);
pMyMenu->TrackPopupMenu(TPM_LEFTBUTTON|TPM_LEFTALIGN,point.x,point.y,this);
My.DestoryMenu();
}