首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

CEGUI里面响应鼠标单击事件失败,该如何解决

2012-02-07 
CEGUI里面响应鼠标单击事件失败是基于GLUT和CEGUI做的,已经在GLUT环境里面添加:glutMouseFunc(processMous

CEGUI里面响应鼠标单击事件失败
是基于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试试~~

热点排行