查看: 2429|回复: 8

osg中如何实现弹出MFC菜单

[复制链接]

该用户从未签到

发表于 2011-12-13 17:55:06 | 显示全部楼层 |阅读模式
如题.希望高手们帮帮忙

该用户从未签到

 楼主| 发表于 2011-12-14 20:58:07 | 显示全部楼层
hunandx2010 发表于 2011-12-14 08:45
这个帖子我也看过,不过不怎么理解他们说得方法,有待学习中。

那个帖子的意思我明白了,今天也实现了一下,确实是高 通过MFC消息机制,不过觉得用sendmessage好,postmessage会延迟,通过自定义消息,在你需要的地方直接发送消息就可以了

该用户从未签到

发表于 2011-12-13 19:06:25 | 显示全部楼层
不知道楼主是想在什么情况下弹出右键菜单。我做的是在pick函数中,如果鼠标左击选中想要的节点后,再右键就能弹出菜单;如果没有选中想要的节点,再右键则不能弹出菜单。
我的方法是在pick类中声明一个bool变量,如果pick成功则变量设置为true,如果不成功则为false。然后在弹出右键菜单的函数中加上这个判断,如果为true则弹出菜单。
这个方法只能是说实现了我想要得功能。应该有更好的方法,还有待学习。

该用户从未签到

发表于 2011-12-13 19:17:09 | 显示全部楼层
这个貌似和osg没有关系,mfc在哪里弹右键菜单都是一样的

该用户从未签到

 楼主| 发表于 2011-12-13 20:35:00 | 显示全部楼层
hunandx2010 发表于 2011-12-13 19:06
不知道楼主是想在什么情况下弹出右键菜单。我做的是在pick函数中,如果鼠标左击选中想要的节点后,再右键就 ...

http://bbs.osgchina.org/forum.ph ... hlight=%B2%CB%B5%A5我是想实现动态弹出菜单
  1. CMenu menu,*pSubMenu;                  //定义下面要用到的cmenu对象   
  2.     menu.LoadMenu(IDR_POPUP_EDIT);       //装载自定义的右键菜单   
  3.     pSubMenu=menu.GetSubMenu(0);        //获取第一个弹出菜单,所以第一个菜单必须有子菜单   
  4.     CPoint oPoint;                       //定义一个用于确定光标位置的位置   
  5.     GetCursorPos(&oPoint);                //获取当前光标的位置,以便使得菜单可以跟随光标   
  6.     pSubMenu->TrackPopupMenu(TPM_LEFTALIGN,oPoint.x,oPoint.y,this);   //在指定位置显示弹出菜单

  7.     pSubMenu->DestroyMenu();
复制代码
倒数第二句的this在handle中的release中不好定义,那帖子里说通过发送信息可以实现,我不知道该如何实现,后来楼主说做好了,问他也没有消息

该用户从未签到

发表于 2011-12-14 08:45:53 | 显示全部楼层
garyliyong 发表于 2011-12-13 20:35
http://bbs.osgchina.org/forum.php?mod=viewthread&tid=6270&highlight=%B2%CB%B5%A5我是想实现动态弹出 ...

这个帖子我也看过,不过不怎么理解他们说得方法,有待学习中。

该用户从未签到

 楼主| 发表于 2011-12-14 14:08:48 | 显示全部楼层
hunandx2010 发表于 2011-12-14 08:45
这个帖子我也看过,不过不怎么理解他们说得方法,有待学习中。

我这个问题稍微有些复杂,我要在不同的情况下弹出不同的菜单,在我的handle中,已经有了右键弹起的事件,这时MFC右键就不响应。所以我的这个右键菜单需要在handle中的release弹出,上面那个帖子提供了一种方法,可惜楼主不愿意贡献出来呀

该用户从未签到

发表于 2015-10-24 18:53:23 | 显示全部楼层
楼主帅哥,你最后怎么实现的呀:)

该用户从未签到

发表于 2015-10-27 15:35:52 | 显示全部楼层
发送消息给view的hwnd,mfc的view接收这个消息
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表