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
Partager