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

Auteur Sujet: Fullscreen et Focus de la souris  (Lu 1842 fois)

0 Membres et 1 Invité sur ce sujet

kainy

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
Fullscreen et Focus de la souris
« le: Décembre 31, 2013, 05:23:09 pm »
Bonjour !

En ce moment j'essaye de créer un éditeur de carte, du moins c'est l'objectif final, j'ai essayé dernièrement de tout mettre en "fullscreen" et je pensais qu'après ça, si je faisais un alt-tab pour aller sur une autre fenêtre, je n'aurai plus aucune interaction sur ce qu'il se passe dans mon programme SFML. Je me suis rendu compte que peu importe où je me situe (bureau, etc), cela influence mon programme.

J'ai essayé d'utiliser GainedFocus et LostFocus, mais on dirait que cela alterne entre les deux lorsque je suis sur une autre fenêtre. Quelqu'un aurait-il une idée de comment je pourrai ne plus intéragir avec mon programme fullscreen en arrière plan, si je rebascule sur le bureau? Désolé si j'ai raté quelque chose d'important qui pourrait tout solutionner mais franchement j'ai pas trouvé ^^.

Merci par avance aux personnes qui prennent le temps de lire/répondre.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Fullscreen et Focus de la souris
« Réponse #1 le: Janvier 01, 2014, 11:22:59 am »
Il faudrait une description du problème un peu plus précise : les fonctions que tu utilises (celles qui continuent à réagir alors que ta fenêtre n'a pas le focus), etc.
Laurent Gomila - SFML developer

kainy

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
Re : Fullscreen et Focus de la souris
« Réponse #2 le: Janvier 01, 2014, 03:32:52 pm »
D'accord, je vais donc copier le code nécessaire pour expliquer plus clairement :

sf::RenderWindow window;
window.create(sf::VideoMode(screenDimensions.x, screenDimensions.y), "Map Editor", sf::Style::Fullscreen);

if(sf::Mouse::isButtonPressed(sf::Mouse::Left))
{
    window.close();
}

Je sais pas si ça sera suffisant, en tout cas désolé de pas avoir commencé par ça. Lorsque je lance ma fenêtre plein écran, si je change de fenêtre pour faire autre chose par un alt tab, le programme considère que je suis toujours dans ma fenêtre sfml. Donc si je clique quelque part en dehors de mon programme, cela ferme le programme. En gros j'aimerai savoir comment ne plus interagir avec le programme lorsque je change de fenêtre, si il existerait une fonction qui pourrait m'aider dans ce sens-là.

J'ai essayé de faire des tests avec les événements GainedFocus et LostFocus en affichant un message et j'ai l'impression que cela alterne entre les deux, aurai-je omis quelque chose? En tout cas j'espère avoir su exposer mon problème ^^.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Fullscreen et Focus de la souris
« Réponse #3 le: Janvier 02, 2014, 08:01:00 am »
En effet, comme expliqué dans la doc ou les tutoriels, les fonctions de sf::Mouse, sf::Keyboard et sf::Joystick ne sont pas connectées à une fenêtre, elles lisent l'état des périphériques en direct. Donc même quand ta fenêtre n'a pas le focus, sf::Mouse continue de lire l'état de la souris.

Deux solutions :
- pour les actions ponctuelles, utilise plutôt les évènements (sf::Event::MouseButtonPressed)
- pour le reste, stocker l'état de focus de la fenêtre est la bonne solution ; quel est ton problème avec ça ?
Laurent Gomila - SFML developer

kainy

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
Re : Fullscreen et Focus de la souris
« Réponse #4 le: Janvier 02, 2014, 07:16:53 pm »
D'accord je comprends mieux, merci pour ces informations, je n'ai pas su le voir dans la documentation, c'est une erreur d'attention de ma part.

Je m'y suis mal pris pour stocker l'état de focus de la fenêtre je pense car je viens de parvenir à quelque chose qui répond à mes attentes avec :

if (event.type == sf::Event::LostFocus)

Merci pour la rapidité de réponse, c'est exactement ce que je cherchais à savoir.