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

Auteur Sujet: affichage de shapes dans la deuxieme fenêtre  (Lu 2192 fois)

0 Membres et 1 Invité sur ce sujet

gmile

  • Newbie
  • *
  • Messages: 1
    • Voir le profil
    • E-mail
affichage de shapes dans la deuxieme fenêtre
« le: Février 18, 2017, 10:34:33 am »
Bonjour...
J'apprends le c++ et je suis assez nouveau avec la sfml...
Ça fais un moment que je cherche partout et que je retourne mon code dans tout les sens... je ne comprends pas ce que je fais de faut...

En résumé je voulais créer une fenêtre "console" a partir de laquelle j'affiche une ou plusieurs autre fenêtre(s)...

Une class pour ma première fenêtre dans un autre fichier, une classe pour la deuxième et la gestion des événements dans le main...

les shapes que j'essaie d'afficher n'apparaissent qu'une fois sur 2 (parfois des suite de 10 fois avec, et dix fois sans...).
C'est un problème avec l'ouverture de la fenêtre je pense, car quand le programme tourne, si on ouvre et ferme plusieurs fois cette deuxième fenêtre, les forme apparaissent ou non...

Ce n'est apparemment pas un problème avec mes shapes puisqu'ils s'affichent normalement sur la première fenêtre...

Voici l'exemple... (J'ai essayé de simplifier le code pour l'essentiel, mais en gardant la même structure que mon code de base)...


Ah, j'oublie de préciser que je travaille avec Xcode sous macos...

main
(click to show/hide)


PremiereFenetre.cpp
(click to show/hide)


DeuxiemeFenetre.cpp
(click to show/hide)


Bon voilà...
Sinon une solution est évidement de tout faire dans la même fenêtre en poussant par exemple la console sur la droite... Ce ne serait pas un problème... mais bon, ça m'embête car là il y a manifestement quelque chose que je n'ai pas compris... et j'aimerai savoir quoi... en outre la possibilité d'avoir une fenêtre avec seulement des textes et une autre avec les animations me semble assez "pratique"...

Voilà...


Et merci aux développeurs de la sfml et à vos docus/tutos etc...


P.S. : sinon, j'utilise la dernière version de la sfml (retéléchargée hier)
P.S. : j'utilise la dernière version (je l'ai retéléchargé hier

janf

  • Newbie
  • *
  • Messages: 45
    • Voir le profil
Re : affichage de shapes dans la deuxieme fenêtre
« Réponse #1 le: Mars 19, 2017, 03:50:54 pm »
Si j'ai bien compris ton problème, c'est tout le côté C++ "orienté objet", classes et héritage que tu dois revoir.
Mais ne t'inquiète pas, c'est normal de galérer un peu au début.

Je ne vois pas tes fichiers hpp mais j'ai l'impression que tes classes NE SONT PAS des sf::RenderWindow.

Normalement, ta classe de fenêtre perso devrait être déclarée comme suit :
#include <SFML/Graphics.hpp>

class MaFenetre : public sf::RenderWindow // On hérite de sf::RenderWindow, ce qui fait que MaFenetre EST une RenderWindow
{
    //...
};
 

Et dans ton main(), tu dois déclarer ta fenêtre et appeler ses méthodes à partir du nom d'objet de ta fenêtre, pas en appelant le nom de la classe (d'une façon totalement obscure pour moi, je savais pas que ça compilait).
#include "MaFenetre.hpp"

int main()
{
   //...
   MaFenetre premiereFenetre(/* arguments */);

   while ( premiereFenetre.isOpen() )
   {
     // Gérer les événements, faire des trucs...
     // Puis afficher :
     premiereFenetre.clear();  // On efface la fenêtre à chaque frame.
     premiereFenetre.draw(/* un objet dérivant de sf::Drawable */);  // On dessine dans la fenêtre.
     premiereFenetre.display(); // On affiche ce qu'on a dessiné.
   }

   return 0;
}
 
« Modifié: Mars 19, 2017, 04:04:02 pm par Renardesque »

 

anything