Bonjour à tous !
J'ai un problème étrange... avec IEventReceiver, lorsque j'appuis sur un bouton du GUI, et qu'ensuite j'appuis sur une touche du clavier, cette touche est répétée 2 fois.
Voici mes classes :
class KeyEventReceiver : public IEventReceiver
{
public:
bool OnEvent(const SEvent &event)
{
if(event.EventType == EET_KEY_INPUT_EVENT && event.KeyInput.PressedDown)
{
std::cout << "key: " << event.KeyInput.Char << std::endl;
}
return false;
}
};
class GuiEventReceiver : public IEventReceiver
{
public:
bool OnEvent(const SEvent &event)
{
if(event.EventType == EET_GUI_EVENT && event.GUIEvent.EventType == gui::EGET_BUTTON_CLICKED)
{
std::cout << "bouton: " << event.GUIEvent.Caller << std::endl;
}
return false;
}
};
Et le main :
int main()
{
// IEventReceiver
KeyEventReceiver keyEvents;
GuiEventReceiver GuiEvents;
// creation de la fenetre
IrrlichtDevice *device = createDevice(video::EDT_DIRECT3D9, core::dimension2d<s32>(110, 40), 32, false, false, true, &keyEvents);
video::IVideoDriver *driver = device->getVideoDriver();
gui::IGUIEnvironment *guienv = device->getGUIEnvironment();
// ajout d'un bouton
guienv->addButton(core::rect<s32>(10, 10, 100, 30), 0, 1, L"Bouton de test");
// assigne le IEventReceiver perso au guienv
guienv->setUserEventReceiver(&GuiEvents);
// dessine
while(device->run())
{
driver->beginScene(true, true, video::SColor(0, 100, 100, 100));
guienv->drawAll();
driver->endScene();
}
device->drop();
return 0;
}
De cette façon ça fonctionne, mais je ne comprend pas pourquoi avec un seul IEventReceiver ça ne marche pas.
Merci de votre aide
