总有人间一两风,填我十万八千梦

【MFC】CListCtrl右键菜单操作

Windows C/C++ Zero、J 4509℃ 0评论

原理

在CListCtrl上鼠标右键的时候,判断当前CListCtrl是否有选中项目,如果有选中项,立即执行弹出菜单的操作,否则不响应。

相关代码

void CXXXDLG::OnNMRClickListObType(NMHDR *pNMHDR, LRESULT *pResult)
{
 LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
 *pResult = 0;

 //如果当前没有选中的行,右键菜单不显示
 POSITION pos = m_ObjectTypeListCtrl.GetFirstSelectedItemPosition();
 int CurSel = m_ObjectTypeListCtrl.GetNextSelectedItem(pos); //取得当前行号
 if(CurSel==-1)return;//如果没有选中的项目,返回

 //显示弹出菜单
 CPoint point;
 GetCursorPos(&amp;point);

 CMenu menu;
 menu.LoadMenu(IDR_MENU_SET);//获取菜单的资源
 CMenu* popup = menu.GetSubMenu(0);//只获取第一个列菜单的指针
//弹出菜单显示
 popup->TrackPopupMenu(TPM_RIGHTBUTTON|TPM_LEFTALIGN,point.x,point.y,this);
}

上面的操作是在CListCtrl的右键消息中完成的,其菜单的响应消息和普通菜单一致。

转载请注明:悠然品鉴 » 【MFC】CListCtrl右键菜单操作

喜欢 (0)or分享 (0)
发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. 感谢分享
    天空2015-10-27 10:19 回复