查看: 1463|回复: 6

回答对于GUIEventHandler的问题

[复制链接]

该用户从未签到

发表于 2011-5-18 15:32:39 | 显示全部楼层 |阅读模式
TestGUIHandler.zip (4.82 KB, 下载次数: 152)

该用户从未签到

发表于 2011-5-19 11:07:41 | 显示全部楼层
谢谢您的回答,呵呵
其实我上传的附件例子跟你的一样,也没什么问题
OSG的源码我跟着array兄的《最长的一帧》也看了一些,不过对于原理还是有些模糊

该用户从未签到

 楼主| 发表于 2011-5-19 11:27:18 | 显示全部楼层

osg的原理我准备写一篇论文,只是现在具体如何下笔还没有想好,尤其是你那些看不懂的地方,可以尽量粘贴出来帮你解决

该用户从未签到

发表于 2011-5-19 14:40:00 | 显示全部楼层
我上传的例子和你的例子以及OSG中osgkeyboardmouse这个例子运行都没问题,我在另外一个源码比较多的程序里就出问题了,所以我想知道什么原因会导致这样的问题

该用户从未签到

发表于 2011-5-19 16:05:04 | 显示全部楼层
又做了个测试,在MFC中会出现我遇到的问题,而一般的控制台程序正常,估计和MFC的消息机制有关系,还未想到具体调试办法

该用户从未签到

发表于 2011-5-19 18:50:12 | 显示全部楼层
查看了每个消息处理函数,发现我以前为了解决一个问题在CView类的OnKeyDown消息函数里加了这样一段代码

  1. // 如果没有这个重写,无法响应箭头方向键但是能响应qweasd?
  2. if(mOSG ->getViewer()->getViewWithFocus()==mOSG->getViewer()->getView(0))
  3. {
  4.   mOSG ->getViewer()->getView(0)->getEventQueue()->keyPress(nChar);
  5. }
复制代码
把上面这段代码注释了,一切就和谐了。
但是方向键无法相应用户操作。

该用户从未签到

发表于 2011-5-19 20:29:24 | 显示全部楼层
问题已经解决,原因是操作器中对方向键的响应采用的是MFC的消息,换成OSG中定义的消息(如osgGA::GUIEventAdapter::KEY_Left)等即可

解决问题还是要慢慢排查,谢谢版主
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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