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);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值