您的位置:首页 > 产品设计 > UI/UE

CEGUI消息相应

2016-01-19 17:39 447 查看
1.假设我们要响应一个单选按钮的控件,因该想到的必须处理的事件WM_MOUSEMOVE WM_LBUTTONDOWN WM_LBUTTONUP2.为你的单选按钮注册一个事件
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的值都是不正确的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: