admin管理员组

文章数量:1026989

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 joyprivate: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的值都是不正确的

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 joyprivate: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的值都是不正确的

本文标签: CEGUI消息相应