查看: 1638|回复: 7

MFC 对象选取的问题

[复制链接]

该用户从未签到

发表于 2011-9-9 17:35:20 | 显示全部楼层 |阅读模式
参照《OpenSceneGraph三维渲染引擎编程指南》中的8.3.3例子。
先定义class PickHandler:public osgGA::GUIEventHandler这个类。


然后定义鼠标双击相应事件:
void CRambleSystemView::OnLButtonDblClk(UINT nFlags, CPoint point)
{

//mOSG->getViewer()->getEventQueue()->mouseDoubleButtonPress(point.x, point.y, nFlags);

mOSG->getViewer()->addEventHandler(new PickHandler());

CView::OnLButtonDblClk(nFlags, point);
}


但是执行进PickHandler后,程序会出错。
QQ截图未命名.jpg


请问我该在哪里设置PickHandler类,在哪里响应鼠标双击事件?

该用户从未签到

发表于 2011-9-10 12:21:44 | 显示全部楼层
你这样要是能ok  那就真的是出问题了

该用户从未签到

发表于 2011-9-10 12:27:40 | 显示全部楼层
补充说明一下

你的范例中多半是osg和mfc工作在不同的线程中,你在mfc的线程中强制去修改一个osg线程中的数据,这可是没有任何安全保证的。

建议你吧命令转换成字符串或者内存片段,通过安全的方式追加到共享数据区,然后由osg的线程来读取并处理这些命令。

该用户从未签到

发表于 2011-9-10 14:43:12 | 显示全部楼层
补充说明一下

你的范例中多半是osg和mfc工作在不同的线程中,你在mfc的线程中强制去修改一个osg线程中的 ...
阿威 发表于 2011-9-10 12:27



    您能不能举个简单实现的例子啊,在用MFC/OSG时好像也有也是在MFC现成中修改OSG线程中的数据,有的时候就会出错,多谢您了,高手啊!!

该用户从未签到

发表于 2011-9-12 14:12:03 | 显示全部楼层
PickHandler里重载virtual bool handle(constosgGA::GUIEventAdapter&ea,osgGA::GUIActionAdapter& aa)在这个函数里判断鼠标事件

该用户从未签到

发表于 2013-3-11 19:05:22 | 显示全部楼层
楼主有没有解决这个问题?

该用户从未签到

发表于 2013-3-12 08:51:36 | 显示全部楼层
威哥 讲话的时候站的角度太高了!理解不了啊

该用户从未签到

发表于 2014-6-3 13:42:33 | 显示全部楼层
开始搞mfc 这个问题 感觉很复杂
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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