#0 

12-06-2008 21:05:25

samsoft
Membre
Lieu: Moissy Cramayel (77550)
Date d'inscription: 10-06-2008
Messages: 14
Site web

Bonjour, je développe un petit rpg (on verra jusqu'où le projet ira [seul pour le moment big_smile ] ).
Je test un moyen d'afficher les informations de mon personnage principal.

Jusqu'ici tout va bien, je crée une classe dérivant de IEventReceiver et j'ajoute une fonction updateOfBoxes soit mise à jour des boîtes (j'ai pas trouvé mieux comme nom hmm ).

Quand l'utilisateur presse I (comme Informations), une messageBox s'affiche (non modale bien entendu), quand il presse à nouveau la touche I, la fenêtre "devrait" être détruite.

Voilà avant tout mon code : (juste de la fonction)

Code:

void CEventReceiver::updateOfBoxes()
{
    if(m_isPrinting) //Si une touche permettant de cre'er un objet a e'te' presse'
    {
        if(!m_isInfoBoxVisible) //Si la boite d'info n'est pas affiche'e
        {
            if(m_action == printInfoBox) //Si l'utilisateur veut en cre'er une
            {
                m_gui->addMessageBox(m_myCharacter->getName(), L"PV: 100%\nHP: 90%", false); //Donne'es bidons pour tester
                m_isInfoBoxVisible = true;
            }
        }
        else if(m_isInfoBoxVisible)
        {
            if(m_action == deleteInfoBox) //On de'truit la boite d'info
            {
                m_isInfoBoxVisible = false;
            }
        }
    }
}

Bon mon code fait exactement ce qui est prévu, ma question est :
Comment supprimer une messageBox (j'ai cherché dans la doc, j'ai trouvé add mais pas delete) et à part supprimer le gui lui même (ce qui est affreux car faudrait en recréer un autre à chaque fois), je ne vois pas.

Pour le moment :
Pression 1 sur I -> affiche la boite
Pression 2 sur I -> du point de vue code la boite est détruite
Pression 3 sur I -> affiche la boite
Pression 4 sur I -> du point de vue code la boite est détruite
...

Je me retrouve donc avec (nombre de fois où on presse I)/2 boites ce qui est assez gênant.

Merci d'avance,


Le savoir est un droit universel, libérez le code source !

Hors ligne


#1 

13-06-2008 10:21:33

Perceval
Abonné
Date d'inscription: 20-10-2006
Messages: 105

Les boites de messages que tu utilises dérivent de la classe IGUIElement, qui définit une méthode remove(). C'est cette méthode que tu dois appeler pour détruire ta message box.

ps : updateOfBoxes, ça me semble pas si mauvais comme nom wink

Hors ligne


#2 

13-06-2008 18:01:02

samsoft
Membre
Lieu: Moissy Cramayel (77550)
Date d'inscription: 10-06-2008
Messages: 14
Site web

Merci smile
Je vais essayer cela mais je ne pourrai tester cette solution que dans 3 semaines (pas de résolu tout de suite).


Le savoir est un droit universel, libérez le code source !

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
882 membres
1429 sujets
11119 messages
Dernier membre inscrit: LiseBuisson96
45 invités en ligne
Aucun membre connecté
RSS Feed