OGRE+OIS+CEGUI解决双鼠标问题

在ExampleFrameListerner文件中添加如下代码:

//初始化ois的参数列表
  OIS::ParamList pl;
  size_t windowHnd = 0;
  std::ostringstream windowHndStr;

  win->getCustomAttribute("WINDOW", &windowHnd);
  windowHndStr << windowHnd;
  pl.insert(std::make_pair(std::string("WINDOW"), windowHndStr.str()));
  //增加ois对win32鼠标的处理

  pl.insert(std::make_pair(std::string("w32_mouse"), std::string("DISCL_FOREGROUND")));
  pl.insert(std::make_pair(std::string("w32_mouse"), std::string("DISCL_NONEXCLUSIVE")));

 

 

同时在MouseMoved函数中添加如下代码:

if(arg.state.X.abs<mWindow->getViewport(0)->getActualLeft()+2
  ||(arg.state.Y.abs<mWindow->getViewport(0)->getActualTop()+0.5)
  ||(arg.state.X.abs>(mWindow->getViewport(0)->getActualLeft()+mWindow->getViewport(0)->getActualWidth()-2))  
  ||(arg.state.Y.abs>(mWindow->getViewport(0)->getActualTop()+mWindow->getViewport(0)->getActualHeight()-2)))         //判断当前鼠标的位置是否超出Ogre的窗口。
 {

  CEGUI::MouseCursor::getSingleton().hide();
 }
 else
 {
  CEGUI::MouseCursor::getSingleton().show();
  ShowCursor(0);           //隐藏系统鼠标
 } 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值