CEGUI里面响应鼠标单击事件失败,该如何解决
CEGUI里面响应鼠标单击事件失败
是基于GLUT和CEGUI做的,已经在GLUT环境里面添加:
glutMouseFunc(processMouse);
glutPassiveMotionFunc(processMoveMouse);
对应的代码:
现在也能看到鼠标在界面里面移动了.
并且绑定了事件:
对应的事件:
但是当把鼠标单击那个按钮的时候 却没有任何反应?这是何解...
------解决方案--------------------
把 quitButton->setPosition(CEGUI::UVector2(cegui_reldim(0.35f), cegui_reldim( 0.45f)) );
quitButton->setSize(CEGUI::UVector2(cegui_reldim(0.35f), cegui_reldim( 0.1f)) );
换成 quitButton->setArea()试试~~· 或者把pushButton换成Button试试~~
是基于GLUT和CEGUI做的,已经在GLUT环境里面添加:
glutMouseFunc(processMouse);
glutPassiveMotionFunc(processMoveMouse);
对应的代码:
- C/C++ code
void processMouse(int button, int state, int x, int y) { if (state == GLUT_DOWN) { if (button == GLUT_LEFT_BUTTON) { cegui.pSys->injectMouseButtonDown(LeftButton); } else if (button == GLUT_MIDDLE_BUTTON) { cegui.pSys->injectMouseButtonDown(RightButton); } else { } } } void processMoveMouse(int x, int y) { cegui.pSys->injectMousePosition(x, y); }
现在也能看到鼠标在界面里面移动了.
并且绑定了事件:
- C/C++ code
CEGUI::PushButton* quitButton = (CEGUI::PushButton*)CEGUI::WindowManager::getSingleton().createWindow ("TaharezLook/Button", (CEGUI::utf8*)"Quit"); root->addChildWindow(quitButton); quitButton->setPosition(CEGUI::UVector2(cegui_reldim(0.35f), cegui_reldim( 0.45f)) ); quitButton->setSize(CEGUI::UVector2(cegui_reldim(0.35f), cegui_reldim( 0.1f)) ); quitButton->setText("Quit"); //绑定事件 CEGUI::WindowManager::getSingleton().getWindow("Quit")->subscribeEvent( CEGUI::PushButton::EventClicked,CEGUI::Event::Subscriber(&GUI::DoSomething,this));
对应的事件:
- C/C++ code
bool GUI::DoSomething(const CEGUI::EventArgs& args) { MessageBox( NULL, (LPCWSTR)L"Resource not available\nDo you want to try again?", (LPCWSTR)L"Account Details", MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2 ); return true; }
但是当把鼠标单击那个按钮的时候 却没有任何反应?这是何解...
------解决方案--------------------
把 quitButton->setPosition(CEGUI::UVector2(cegui_reldim(0.35f), cegui_reldim( 0.45f)) );
quitButton->setSize(CEGUI::UVector2(cegui_reldim(0.35f), cegui_reldim( 0.1f)) );
换成 quitButton->setArea()试试~~· 或者把pushButton换成Button试试~~