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

为何我的弹出菜单和主菜单执行的效果不一样?

楼主zxphxh(天雨)2006-03-11 22:02:20 在 VC/MFC / 界面 提问

刚接触VC。现在做一个界面,如资源浏览器样式。  
   
  在主菜单中所有的菜单命令都放在MainFrame类中了,其中有一个命令为:CMyDlg   *pDlg   =   new   CMyDlg;   pDlg->DoModal();调出对话框设置一些参数,一切都正常。  
   
  我在左视图CTreeView中加入如下消息映射,用来右键弹出主菜单的一部分:  
  void   CKeyView::OnRButtonDown(UINT   nFlags,   CPoint   point)  
  {  
          CMenu   Menu;  
          Menu.LoadMenu(IDR_MAINFRAME);  
          CMenu   *pM   =   Menu.GetSubMenu(1);  
          pM->TrackPopupMenu(TPM_RIGHTBUTTON,   point.x,   point.y,   AfxGetMainWnd());  
          Menu.DestroyMenu();  
          CTreeView::OnRButtonDown(nFlags,   point);  
  }  
   
  单击调出对话框时,也能显示,但不响应鼠标和键盘输入。可是点击其它正在运行的程序之后,再点击我的程序就正常,或者在pDlg->DoModal()语句前加入MessageBox("ABC",0,0);弹出一个消息框后也正常了。  
   
  请问这是为何?  
  问题点数:20、回复次数:5Top

1 楼truewill(无处不在)回复于 2006-03-11 22:11:54 得分 10

试一下不要用动态生成   CMyDlg   *pDlg   =   new   CMyDlg;  
  改为在mainframe加个变量CMyDlg   m_dlg;  
   
  另外,你好像没有说清楚你的问题,到底什么东西部相应鼠标,在哪里做pDlg->DoModal()的Top

2 楼zxphxh(天雨)回复于 2006-03-11 22:27:01 得分 0

就是在主菜单:“工具->设置”菜单中调出有模式对话框,在对话框上点击鼠标左键,任何控件都不响应。但我刚发现,有些CEdit控件能进行键盘输入。  
   
  又发现一个新问题:此时不管鼠标位置在不在CTreeView视图中,只要按下鼠标右键,都能弹出菜单。Top

3 楼Mackz(在相互)回复于 2006-03-11 22:46:16 得分 10

焦点问题。  
   
  在OnContextMenu   中触发弹出菜单Top

4 楼zxphxh(天雨)回复于 2006-03-11 22:57:59 得分 0

我发现问题的所在,把下面这句代码屏蔽掉就完全正常了  
  //   CTreeView::OnRButtonDown(nFlags,   point);  
  对VC了解太少,不知这句有没有用?  
   
   
  请问:Mackz(在相互)  
   
  我也在OnContextMenu试了一下:  
  void   CKeyView::OnContextMenu(CWnd*   /*   pWnd*/,   CPoint   point)  
  {  
          CMenu   Menu;  
          Menu.LoadMenu(IDR_MAINFRAME);          
          CMenu   *pM   =   Menu.GetSubMenu(1);  
          pM->TrackPopupMenu(TPM_RIGHTBUTTON,   point.x,   point.y,   AfxGetMainWnd());  
  }  
  但是我按下鼠标右键只有不动,且移动鼠标,再松开,才弹出菜单,这是为何?  
  Top

5 楼Mackz(在相互)回复于 2006-03-13 12:45:05 得分 0

可能是因为你同时响应了右键按下的消息。Top

相关问题

  • 弹出菜单?
  • 请问动态弹出菜单后,怎么执行相应的代码?
  • 弹出式菜单?
  • 如何像Windows开始菜单一样,点击button弹出一个PopMenu呢?
  • 如何在弹出菜单实现小图标,就象oicq一样。
  • 怎样以 Button 的左上角为起点显示弹出菜单? 就像 Windows 的开始菜单一样。
  • 点击某个菜单后,当鼠标移动到别的菜单,如何让该菜单自动弹出?正如VC的菜单模式一样!
  • 现有一弹出菜单
  • 弹出式菜单求教?
  • 弹出菜单问题

关键词

  • 鼠标
  • 消息
  • pm
  • 菜单
  • 弹出
  • cmydlg
  • pdlg
  • ctreeview
  • 右键
  • 对话框

得分解答快速导航

  • 帖主:zxphxh
  • truewill
  • Mackz

相关链接

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

广告也精彩

反馈

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