折腾了半天,终于把MFC+OGRE+ETM+CEGUI整合起来了
本来想加OIS的,结果OIS加载的代码有问题,手头上也没OIS相关教程,只好先去掉OIS了,可能跟MFC冲突==》句柄错误
奇了怪了,FPS低得出奇 得找找原因==》加上定时刷屏即可,注意清除背景绘制,否则屏幕抖动剧烈
OIS createInputObject 失败原因:
OIS需要 根窗口的句柄来处理
unsigned long h = (unsigned long)AfxGetMainWnd()->GetSafeHwnd(); //获得根窗口句柄
pl.insert(std::make_pair(std::string("WINDOW"), StringConverter::toString(h));
mInputManager = OIS::InputManager::createInputSystem( pl );
非常遗憾的是,OIS加入后,由于OIS需要根窗口的句柄来处理,所以OIS截获了窗口中所有的消息,使MFC中的消息系统失效了,菜单、停靠栏、工具栏全都接收不到消息,鼠标只在VIEW中能够移动...这个问题似乎还没有解决办法,也许是我没找到;
如果OIS使用了钩子来截获鼠标、键盘消息,而经过OIS处理消息后,没传给MFC中的钩子,那么可以通过修改OIS代码中钩子处理函数,将消息后传也许就可以了,没看过OIS代码,瞎猜...

本文记录了作者整合MFC、OGRE、ETM及CEGUI等组件的过程,特别探讨了尝试加入OIS时遇到的问题及其解决方案。文章详细描述了OIS与MFC消息系统冲突的原因,并给出了可能的解决思路。
812





