Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [Résolu]Eviter 'Ne réponds pas'  (Lu 2185 fois)

0 Membres et 2 Invités sur ce sujet

yhu420

  • Jr. Member
  • **
  • Messages: 75
    • Voir le profil
    • E-mail
[Résolu]Eviter 'Ne réponds pas'
« le: Juin 20, 2016, 03:51:02 pm »
Bonjour,
Je suis en train de développer un petit projet, et j'autilise souvent une méthode qui ressembe à cela:
void ErrorManager::displayImportantConsole(const std::string& message)
{
        std::cout << message << std::endl;
        std::cout << "Press a key to continue.." << std::endl;
        while (!std::cin.get())
        {
                point_to_window->pollEvent(*point_to_event);
                point_to_window->display();
        }
        fflush(stdin);
}

La boucle a pour seul rôle de faire en sorte que la fenêtre continue de répondre en même temps que la console... en vain.
Je sais bien que ce n'est pas la manière conventionnelle d'utiliser SFML, mais là je cherche juste à comprendre ce qu'il se passe pour la fenêtre.
Ma connaissance sur la gestion des évènements n'est sûrement pas assez grande pour pouvoir résoudre ce problème, alors je compte sur vous  ;D
Merci
« Modifié: Juin 20, 2016, 09:29:51 pm par yhu420 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Eviter 'Ne réponds pas'
« Réponse #1 le: Juin 20, 2016, 06:45:56 pm »
Très honnêtement je ne sais pas, normalement faire tourner la boucle d'évènements suffit à rendre la fenêtre "vivante". Mais... ne fais juste pas ça :P

Au pire mets l'attente sur std::cin dans un thread, et continuer à faire tourner ton affichage / évènements normalement dans le thread principal.

Si j'ai le temps je regarderai tout de même pourquoi ton code ne fonctionne pas.
Laurent Gomila - SFML developer

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Eviter 'Ne réponds pas'
« Réponse #2 le: Juin 20, 2016, 06:54:17 pm »
Désolé c'était stupide... std::cin.get() est bloquant, ta boucle while ne sert à rien.
Laurent Gomila - SFML developer

yhu420

  • Jr. Member
  • **
  • Messages: 75
    • Voir le profil
    • E-mail
Re : Eviter 'Ne réponds pas'
« Réponse #3 le: Juin 20, 2016, 09:29:19 pm »
Ok, merci, j'ai contourné le problème en utilisant ce code (lui aussi, peu orthodoxe):
        std::cout << message << std::endl;
        std::cout << "Press enter to continue.." << std::endl;
        while (!sf::Keyboard::isKeyPressed(sf::Keyboard::Return))
        {
                point_to_window->pollEvent(*point_to_event);
                point_to_window->display();
                std::this_thread::sleep_for(std::chrono::milliseconds(10));
        }
        std::this_thread::sleep_for(std::chrono::milliseconds(100));

Merci encore pour ton aide  :D