CEGUI消息相应

1.假设我们要响应一个单选按钮的控件,因该想到的必须处理的事件 

     WM_MOUSEMOVE  WM_LBUTTONDOWN  WM_LBUTTONUP

2.为你的单选按钮注册一个事件

    

class OurPlayer
{
   public:
    OurPlayer()
    {
     RegisterForEvents();   // Call our Register function
    };
    bool Jump(const CEGUI::EventArgs& /*e*/){};        // Jump for joy
   private:
    RegisterForEvents()
    {
	//获得按钮对象完成注册
       gJumpBtnWindow->subscribeEvent(CEGUI::PushButton::EventClicked,CEGUI::Event::Subscriber(&OurPlayer::Jump,this));
    };
}
//注意 
subscribeEvent是一个模板函数,所以事件必须写在一个类中(可以试一下把事件写成全局的编译会报错的)
3.对事件进行拦截
 case WM_MOUSEMOVE:
		CEGUI::System::getSingleton().getDefaultGUIContext().injectMousePosition( (float)(LOWORD(lParam)) , (float)(HIWORD(lParam)) ) ;
		break;
	case WM_LBUTTONDOWN:
		CEGUI::System::getSingleton().getDefaultGUIContext().injectMouseButtonDown( CEGUI::LeftButton ) ;
		break;
	case WM_LBUTTONUP:
		CEGUI::System::getSingleton().getDefaultGUIContext().injectMouseButtonUp( CEGUI::LeftButton ) ;
		break;
//注意
这要放在win32的消息函数里,还有就是WM_MOUSEMOVE这个需要使用injectMousePosition,不能够写injectMouseMove,这样不能响应事件,跟到CEGUI代码里发现无论如何拖动鼠标,position的值都是不正确的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值