CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

这样的情况如何响应右键菜单的消息

楼主Cadillac(努力学好C++发奋学好English)2006-03-10 18:08:38 在 VC/MFC / 界面 提问

再一个继承自CFormView的view中,加入了dlg.然后再该dlg上放了一个listctrl,该listctrl室report形式的  
   
  然后我需要在该listctrl上响应右键弹出菜单  
  菜单已经做好了,我在资源管理中加入了一个菜单资源test,其下有三个子菜单  
   
  void   OnRclickListSection(NMHDR*   pNMHDR,   LRESULT*   pResult)    
  {  
  LPNMLISTVIEW   pNMLV   =   reinterpret_cast<LPNMLISTVIEW>(pNMHDR);  
  int   index   =   pNMLV->iItem;  
  if   (index   ==   -1)  
  return;  
   
  CPoint   pt;  
  CRect   rc;  
  GetWindowRect(&rc);  
  GetCursorPos(&pt);   //鼠标位置  
  CMenu   *pMenu   =   new   CMenu;  
   
  pMenu->LoadMenu(IDR_MENU1);  
  CMenu*   pMenu1   =   pMenu->GetSubMenu(0);  
   
  pMenu1->TrackPopupMenu(TPM_LEFTALIGN|TPM_RETURNCMD,pt.x,pt.y,this);  
   
  *pResult   =   0;  
  }  
  然后我对这三个子菜单都使用classwaizd加入了右键单击消息,但是没有响应阿  
  我使用  
  void   OnContextMenu(CWnd*   pWnd,   CPoint   point)    
  函数,但是这只能响应一个子菜单的消息阿,怎么样可以控制和响应这三个菜单的消息  
  谢谢  
  问题点数:20、回复次数:5Top

1 楼hdqqq(小西瓜)回复于 2006-03-10 18:28:20 得分 0

我是这样写的,   响应的是鼠标右键点击.  
   
  void   COwnFileListView::OnRclick(NMHDR*   pNMHDR,   LRESULT*   pResult)  
  {  
  CPoint   curpos,tmppos;  
  GetCursorPos(&curpos);  
  tmppos   =   curpos;  
  ScreenToClient(&tmppos);  
  if   (GetListCtrl().HitTest(tmppos)   !=   -1)   {  
  CMenu   lmenu;  
  CMenu*   pmenu;  
  if   (lmenu.LoadMenu(IDR_MENU_LIST))   {  
  pmenu   =   lmenu.GetSubMenu(0);  
  pmenu->TrackPopupMenu(TPM_LEFTALIGN   |   TPM_LEFTBUTTON   |   TPM_RIGHTBUTTON,   curpos.x,   curpos.y,   this);  
  }  
  }  
  }Top

2 楼Cadillac(努力学好C++发奋学好English)回复于 2006-03-10 19:31:14 得分 0

我的意思是说,如何响应pop菜单的左键点击事件  
  谢谢Top

3 楼chehw(chehw)回复于 2006-03-10 20:36:00 得分 0

在WM_COMMAND里响应Top

4 楼Mackz(在相互)回复于 2006-03-10 20:38:29 得分 0

如果你弄不清楚消息流程的话,这个弹出菜单中的菜单所属窗口(你这里是this)和菜单处理消息应该是同一个。Top

5 楼Cadillac1()回复于 2006-03-23 17:03:49 得分 20

void   COwnFileListView::OnRclick(NMHDR*   pNMHDR,   LRESULT*   pResult)  
  {  
  CPoint   curpos,tmppos;  
  GetCursorPos(&curpos);  
  tmppos   =   curpos;  
  ScreenToClient(&tmppos);  
  if   (GetListCtrl().HitTest(tmppos)   !=   -1)   {  
  CMenu   lmenu;  
  CMenu*   pmenu;  
  if   (lmenu.LoadMenu(IDR_MENU_LIST))   {  
  pmenu   =   lmenu.GetSubMenu(0);  
  pmenu->TrackPopupMenu(TPM_LEFTALIGN   |   TPM_LEFTBUTTON   |   TPM_RIGHTBUTTON,   curpos.x,   curpos.y,   this);  
  }  
  }  
  }  
   
  Top

相关问题

  • menu 响应右键消息的问题
  • 请问如何在菜单中响应右键点击?
  • 【【【【【【【【 怎样响应 动态创建 的 右键弹出菜单 】】】】】】】】】
  • 关于TreeView中的右键菜单及事件响应
  • 请问如何为右键菜单添加响应代码
  • 请教CListCtrl控件,如何响应右键菜单。
  • 怎么响应打印菜单消息
  • 右键菜单
  • 右键菜单
  • 紧急!怎样给checklistbox加上右键响应消息?

关键词

  • tpm
  • 消息
  • tmppos
  • pmenu
  • curpos
  • lmenu
  • 菜单
  • 响应
  • 右键
  • cmenu

得分解答快速导航

  • 帖主:Cadillac
  • Cadillac1

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo