#0 

18-02-2008 14:25:58

Tank
Petit nouveau
Lieu: Picardie
Date d'inscription: 26-01-2007
Messages: 2

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 :

Code:

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;
        }
};

Code:

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 :

Code:

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 smile

Hors ligne


#1 

18-02-2008 17:56:07

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

Regarde le code du viewer fourni avec irrlicht, tu y trouveras tes réponses je pense.


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#2 

18-02-2008 20:04:55

bebe
Membre
Date d'inscription: 17-02-2008
Messages: 18

ou alors vas chercher ce que tu veux ici : http://irrlicht.sourceforge.net/phpBB2/ … hp?t=24508

prend le dernier code posté, c'est vraiment impec wink

Hors ligne


#3 

18-02-2008 21:51:25

Tank
Petit nouveau
Lieu: Picardie
Date d'inscription: 26-01-2007
Messages: 2

ok merci bien.

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
48 invités en ligne
Aucun membre connecté
RSS Feed