Bonjour,


Apres avoir fait une petite boite alert (une window, un bouton et un label), j'essaye de la detruire pour liberer la memoire.

J'utilise SFML 2.0 & SFGUI.

Le constructeur, pour voir un peu la bete:
Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
AlertBox::AlertBox(const std::string& errortitle, const std::string& errortext) :
    display(true)
{
    // The window
    dialog = sfg::Window::Create(sfg::Window::Style::TITLEBAR);
    dialog->SetTitle(errortitle);
 
 
    // The layouter
    sfg::Box::Ptr box( sfg::Box::Create( sfg::Box::VERTICAL, 5.0f ) );
 
    // The elements
    text = sfg::Label::Create(errortext);
    btn = sfg::Button::Create("Ok");
    btn->GetSignal(sfg::Widget::OnLeftClick).Connect(&AlertBox::Destroy, this);
 
    box->Pack(text);
    box->Pack(btn, false);
    dialog->Add(box);
}

La fonction Destroy ne change que la variable membre "display" à false.

Dans ma boucle graphique, j'ai ceci:
Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
        // Boucle sur les boites alert
        for(auto itr = m_window->GetPerennials()->List().begin(); itr != m_window->GetPerennials()->List().end(); ++itr)
        {
                // Si l'objet n'a jamais été dessiné, on l'ajoute au sfg::Desktop
            if(itr->second->Display() && !itr->second->Drawn())
            {
                // La fonction AlertBox::GetDrawable retourne un sfg::Window::Ptr
                desktop.Add(itr->second->GetDrawable());
            }
            else if(!itr->second->Display())
            { // Ceci est quand on vient d'appuyer sur le bouton, et que la fonction Destroy a ete appellee
                        // On supprime le sfg::Window de sfg::Desktop
                desktop.Remove(itr->second->GetDrawable());
            }
        }
        m_window->Clear(); // sf::RenderWindow::Clear();
        desktop.Update( clock.restart().asSeconds() );
        m_window->RenderGUI(sfgui); // sfg::Display(m_window);
        m_window->Render(); // sf::RenderWindow::Display();

Et Quand j'appuie sur le bouton, he bien le sfg::Window ne disparait pas. Il reste sur l'ecran ! Neanmoins je ne peux plus interagir.
Il doit y avoir un probleme au niveau de Clear, ou Update.

Quelqu'un saurais me gider?
merci, nico