MFC 右键响应菜单的方法

在MFC中创建了一个list control控件,右键某一行弹出菜单

void SelectDlg::OnNMRClickSellist(NMHDR *pNMHDR, LRESULT *pResult)
{//响应右击菜单
	LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	*pResult = 0;

	DWORD dwPos = GetMessagePos();
	CPoint Point(LOWORD(dwPos), HIWORD(dwPos));
	CMenu Menu;
	Menu.LoadMenu(IDR_RCLMENU); //你要弹的菜单ID
	CMenu* Popup = Menu.GetSubMenu(0);//选择要弹出的子菜单//子菜单一定要存在,不然会报错
									  //ASSERT(Popup  != NULL);//???debug下报错

	int nItem = m_sellist.GetSelectionMark();

	if (nItem != -1) {
		CString FilePath = m_sellist.GetItemText(nItem, 5);//5是视频路径
		if (FilePath == "无") {
			Popup->EnableMenuItem(0, MF_BYPOSITION | MF_GRAYED);//如果没有路径,将菜单该选项置为无法选中
		}
		Popup->TrackPopupMenu(TPM_CENTERALIGN | TPM_RIGHTBUTTON, Point.x, Point.y, this);
		Popup->Detach();
	}
	//m_sellist.SetSelectionMark(-1);
}

发布了19 篇原创文章 · 获赞 6 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/u010548772/article/details/66971019
今日推荐