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