CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

求助,关于鼠标右键弹出菜单

楼主psi555(thunder)2006-03-04 12:45:23 在 VC/MFC / 基础类 提问

在一个对话框panel上“List   Box控键区域”,选中一行,单击右键,然后弹出菜单(在菜单项中做一些事情),看了一些例子不是很清楚,   请大家帮助一下,说说怎么来实现。 问题点数:50、回复次数:5Top

1 楼vcmute(BCare4 H1Rest Good9!)回复于 2006-03-04 12:56:27 得分 5

首先是需要一个MENU,然后  
   
  TrackPopupMenu  
  The   TrackPopupMenu   function   displays   a   shortcut   menu   at   the   specified   location   and   tracks   the   selection   of   items   on   the   menu.   The   shortcut   menu   can   appear   anywhere   on   the   screen.  
   
  To   specify   an   area   of   the   screen   the   menu   should   not   overlap,   use   the   TrackPopupMenuEx   function.    
   
  BOOL   TrackPopupMenu(  
      HMENU   hMenu,                   //   handle   to   shortcut   menu  
      UINT   uFlags,                   //   options  
      int   x,                               //   horizontal   position  
      int   y,                               //   vertical   position  
      int   nReserved,               //   reserved,   must   be   zero  
      HWND   hWnd,                       //   handle   to   owner   window  
      CONST   RECT   *prcRect     //   ignored  
  );  
  Top

2 楼psi555(thunder)回复于 2006-03-04 13:14:36 得分 0

能说得具体点吗,比如怎么实现响应鼠标右键,不好意思,   以前没做过mfc开发。Top

3 楼sinkileu(小心)回复于 2006-03-04 13:28:59 得分 5

CMenu   menu;  
  menu.LoadMenu(IDM_MENU1);  
  menu.SubMenu(0).TrackPopupMenu(...)Top

4 楼ysjjsj(有时间就睡觉)回复于 2006-03-04 14:05:55 得分 10

void   CGridCtrl::OnRButtonDown(UINT   nFlags,   CPoint   point)  
  {  
  //MessageBox("right   button   down");  
   
  CMenu   pp; //加载菜单  
  pp.LoadMenu   (IDR_MENU_ZKBH);  
  CMenu*   pSubMenu;  
  //加载子菜单  
  pSubMenu   =   pp.GetSubMenu(0);  
  //显示菜单  
  ClientToScreen(&point);  
  pSubMenu->TrackPopupMenu(TPM_RIGHTBUTTON,   point.x,   point.y,this);  
  pSubMenu->DestroyMenu();  
   
  }  
   
   
  正好有加载代码,也许有点作用。当然加载的前提是要求加入资源!三楼先!Top

5 楼nodefault(永不言败)回复于 2006-03-04 14:20:27 得分 30

这个问题和我的项目一样。  
  1)需要一个MENU资源;  
  2)创建一个自己的List   Box类,比如CMyList类,加入下面的事件  
  void   CMyList::OnContextMenu(CWnd*   pWnd,   CPoint   point)    
  {  
    GetParent()->SendMessage(WM_UserStepEditPopUp,(WPARAM)pWnd,(LPARAM)&point);  
  }  
  在上面是事件中加一个自定义消息。  
  #define   WM_UserStepEditPopUp   WM_USER+9  
  3)把自定义消息引入对话框类。在加如下代码:  
    LRESULT   Cxxxx::OnEditPopUp(WPARAM   wParam,LPARAM   lParam)  
  {  
   
          CPoint   *point   =   (CPoint*   )lParam;  
   
  m_pOperList.ShowControls(HIDDEN_CONTROL);  
   
  CMenu menu;  
  SetFocus();  
  if(menu.LoadMenu(MAKEINTRESOURCE(IDR_STEP_OPER)))  
  {  
  CMenu *pMenu   =   menu.GetSubMenu(1);  
  if(NULL   !=   pMenu)  
  {  
  pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTALIGN|TPM_RIGHTBUTTON,point->x,point->y,this);  
  }  
  }  
   
        return   0;  
  }    
   
      就可以了!  
   
   
  Top

相关问题

  • 怎样鼠标右键弹出菜单
  • 如何定制WINDOWS的鼠标右键弹出菜单?
  • 如何定制WINDOWS的鼠标右键弹出菜单?
  • 鼠标右键点击时,弹出菜单的显示位置
  • 用键盘怎样弹出鼠标右键菜单?
  • 为什么鼠标右键菜单弹出很慢呢?
  • 如何在弹出菜单中使用鼠标右键再弹出另一菜单!!!在线!!!
  • 为什么我的鼠标右键菜单在鼠标处于菜单的中间处弹出?
  • 我想在DBGrid中设计按鼠标右键弹出菜单,但
  • 紧急,listctrl中怎么做 item的鼠标右键弹出菜单?

关键词

  • tpm
  • 右键
  • 菜单
  • menu
  • trackpopupmenu
  • 加载
  • psubmenu
  • cmenu
  • cpoint
  • loadmenu

得分解答快速导航

  • 帖主:psi555
  • vcmute
  • sinkileu
  • ysjjsj
  • nodefault

相关链接

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

广告也精彩

反馈

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