IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GLUT Discussion :

Fermer et Ouvrir une fenêtre glut en C


Sujet :

GLUT

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 52
    Points : 29
    Points
    29
    Par défaut Fermer et Ouvrir une fenêtre glut en C
    Bonjour,

    Bon voilà à peu près mon problème. Je voudrais faire une boucle qui puisse fermer la fenêtre glut en cours et recommencer le programme à 0.

    En fait mon programme affiche une courbe sur une fenêtre glut en fonction de paramètres entré sur la fenêtre dos.
    Moi je voudrais, que lorsque l'utilisateur tape sur une touche, cela quitte la fenêtre glut et relance le programme permettant ainsi à l'utilisateur de refaire une mesure et d'avoir une courbe, sans qu'il soit obligé de quitter le programme puis de recliquer sur l'executable.

    Voilà, j'espère que vous avez compris mon probème, en espérant que quelqu'un puisse m'aider.

    Merci

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    La façon la plus bourrine que je connaisse mais qui résolvera ton problème:

    Fonction: exec man

    Jc

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 52
    Points : 29
    Points
    29
    Par défaut
    Merci, je vais tenter de faire ça.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 52
    Points : 29
    Points
    29
    Par défaut
    Maintenant j'ai un autre problème, le programme est enfin relancé au début, mais la fenêtre glut reste affiché, alors que l'on souhaiterait qu'elle disparaisse, pour l'appeler de nouveau par la suite.

    Car si la fenêtre reste, cela engendre un bug lorsque le programme fait appel à la fonction Initgraph.

    Merci

  5. #5
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Je ne pense pas que glut possède une façon de fermer la fenêtre. J'avais espérer que la fenêtre se fermerait mais c'était idiot. Il est logique que ce ne soit pas le cas.

    Il existe une extension non portable de glut qui le permet:
    http://www-users.york.ac.uk/~rpf1/glut.html

    ou ici

    http://sjbaker.org/steve/software/glut_hack.html

    Une autre solution, qui marcherait serait de faire un fork, tuer le père et relancer avec un exec le fils.

    Avec un peu de chance, la fenêtre est attachée au père donc elle se fermera et le fils en ouvrira une autre...

    Quelle bidouille!

    Jc

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 52
    Points : 29
    Points
    29
    Par défaut
    bah le truc c'est qu'on arrive à relancer le programme, fermer la fenêtre avec la fonction exit(0); mais on arrive pas à faire les deux en même temps, et c'est un vrai problème pour nous.

    Donc pour résumé, on voudrait réunir la fonction exec et exit(), pour faire ces deux choses simultanément.

    Est ce possible??

    Merci

  7. #7
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par Sendo
    bah le truc c'est qu'on arrive à relancer le programme, fermer la fenêtre avec la fonction exit(0); mais on arrive pas à faire les deux en même temps, et c'est un vrai problème pour nous.

    Donc pour résumé, on voudrait réunir la fonction exec et exit(), pour faire ces deux choses simultanément.

    Est ce possible??

    Merci
    Ben oui, comme dit, un fork avec le père qui fait l'exit et le fils qui fait un exec. Cela devrait fonctionner.

    Comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void redemmare()
    {
            if(fork()==0)
            {
              //Fonction exec
            }
            exit(0);
    }
    Jc

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 52
    Points : 29
    Points
    29
    Par défaut
    Merci beaucoup pour cette aide, mais nous avons un dernier petit problème concernant ce fork.
    En fait nous avons comme erreur que fork n'est pas déclaré, je pense qu'on a pas utilisé la bonne bibliothèque mais non ne trouve pas sur internet laquelle il faut utiliser.

    Merci.

    PS: Nous travaillons sur Windows avec dev c++.

  9. #9
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par Sendo
    PS: Nous travaillons sur Windows avec dev c++.
    Arg

    fork n'existe que sous linux/Unix...

    Va falloir que je réfléchisse à une autre solution alors...
    Jc

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 52
    Points : 29
    Points
    29
    Par défaut
    Merci pour ton aide parceque là, ça me bloque vraiment.

    J'espère que tu trouveras la réponse.

    Merci

  11. #11
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Je pense que sous Windows, il n'y a pas de solution en fait

    Mais es-tu obligé de fermer la fenêtre, remettre tout à zéro et donc effacer l'affichage ne pourrait pas suffir?

    Tu pourrais faire un affichage "En attente de l'initialisation"...

    Sinon, comme dit, il faudra aller vers un autre GUI, mais je ne suis même pas sûr que SDL permette de fermer la fenêtre et la rouvrir... Peut-être que GTK le permet...

    Jc

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 52
    Points : 29
    Points
    29
    Par défaut
    non je ne suis pas obligé de fermer la fenêtre, le problème c'est que de que la fenêtre glut apparait, je n'ai plus accès à la fenêtre dos et donc je ne pourrais pas modifier les valeurs et donc réinitialiser la fenêtre glut.

    Mais merci pour ton aide tout de même ^^

  13. #13
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Ok, cela sous entend que tu fais ton initialisation à partir de la fenêtre glut... Pourquoi ne pas faire un système de widget, ou carrément faire l'entrée et l'initialisation dans la fenêtre openGL.

    Cela ne devrait pas être tellement compliqué, quelles sont les données à prendre en compte?

    As-tu un exemple d'entrée de valeurs à faire? Cela donnerait une idée de quoi on parle...

    Jc

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 52
    Points : 29
    Points
    29
    Par défaut
    Bah je vais essayer de bien expliquer.

    Tout d'abord l'utilisateur choisit l'entrée qu'il désire (1 ou 2 cela affecte 10 ou 1 à une variable) ainsi que AC ou DC)
    En fonction de ces chois, nous mesurons un certain signal à l'entrée d'une crte d'acquisition.
    Par la suite, nous avons dans un tableau des valeurs de tension et dans un autre le temps correspondant (ces donées sont recueillies à partir d'une carte d'acquisition)).

    Jusque là tout va bien, mais par exemple, on souhaiterais que lorsque l'utilisateur désire cette fois ci voir l'entrée 2, qu'il ne doive pas quitter le programme pour recommencer à 0.
    On voudrait pouvoir retourner sur DOS pour choisir les nouveaux paramètres, et qu'ainsi, le programme refasse des mesures grâce à la carte, puis que la fenêtre glut s'actualise (je crois avoir une fonction qui fait ça) pour retracer la nouvelle courbe.

    Voilà en gros, j'espère que cela n'est pas trop confus.

    Merci

  15. #15
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par Sendo
    Bah je vais essayer de bien expliquer.

    Tout d'abord l'utilisateur choisit l'entrée qu'il désire (1 ou 2 cela affecte 10 ou 1 à une variable) ainsi que AC ou DC)
    En fonction de ces chois, nous mesurons un certain signal à l'entrée d'une crte d'acquisition.
    Par la suite, nous avons dans un tableau des valeurs de tension et dans un autre le temps correspondant (ces donées sont recueillies à partir d'une carte d'acquisition)).

    Jusque là tout va bien, mais par exemple, on souhaiterais que lorsque l'utilisateur désire cette fois ci voir l'entrée 2, qu'il ne doive pas quitter le programme pour recommencer à 0.
    On voudrait pouvoir retourner sur DOS pour choisir les nouveaux paramètres, et qu'ainsi, le programme refasse des mesures grâce à la carte, puis que la fenêtre glut s'actualise (je crois avoir une fonction qui fait ça) pour retracer la nouvelle courbe.

    Voilà en gros, j'espère que cela n'est pas trop confus.

    Merci
    Bon, je ne sais pas combien de temps vous avez pour faire votre projet (nous sommes tous généralement pris par le temps, je sais).

    Mais franchement, si vous prenez un peu de temps, vous devriez passer par GTK pour faire ce genre de projet. Vous auriez, avec facilité, la possibilité de faire d'un côté l'acquisition des valeurs avec des boutons et autres dispositifs graphiques et ensuite de l'autre côté la courbe.

    Vous avez aussi la possibilité de passer par Java qui permet également d'intégrer votre fenêtre OpenGL (je crois que cela s'appelle JOGL)...

    Finalement, vous pourriez faire votre GUI vous-même, ce n'est pas tellement compliqué mais vous n'aurez sûrement pas d'aussi bons résultats qu'avec GTK/Java/ou autre GUI...

    Est-ce vraiment inconcevable de prendre une journée pour faire cet apprentissage. De toute facon, vous n'avez pas vraiment le choix, si vous restez avec Glut et sous windows, cela ne peut pas fonctionner sans prendre une extension de Glut qui rendra le tout non portable...

    Jc

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 52
    Points : 29
    Points
    29
    Par défaut
    On a réussi à trouver une solution, qui n'est surement pas la meilleure, mais qui fonctionne.
    En fait, nous avons fait un menu sur la fenêtre glut qui s'affiche lorsque l'utilisateur clique sur le bouton droit de la souris. Cela lui permet de pouvoir choisir ce qu'il veut puis encliquant sur réinistialiser, la courbe se retrace automatiquement. Cela nous permet au moins de ne pas avoir à repasser par la fenêtre DOS.

    Et pour répondre, non on a pas vraiment le temps, il faut que l'on ai fini pour jeudi.

    De plus, on connait pas du tout GTK lol

    En tout cas, merci pour ton aide ^^

  17. #17
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par Sendo
    On a réussi à trouver une solution, qui n'est surement pas la meilleure, mais qui fonctionne.
    En fait, nous avons fait un menu sur la fenêtre glut qui s'affiche lorsque l'utilisateur clique sur le bouton droit de la souris. Cela lui permet de pouvoir choisir ce qu'il veut puis encliquant sur réinistialiser, la courbe se retrace automatiquement. Cela nous permet au moins de ne pas avoir à repasser par la fenêtre DOS.
    Si à chaque clic de souris vous utiliser glutPostRedisplay, ce n'est pas utile d'avoir un bouton réinitialiser.

    Jc

  18. #18
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Points : 38
    Points
    38
    Par défaut
    ya pas moyen de faire le menu dans glut ??

    sinon si té en c++ la fonction CreateProcess() devrait t'aider un peu !!
    c le fork dans windows.

    Code : 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
     
    #include <windows.h>
     
    	BOOL succes; // Indiquera la réussite ou non des opérations tentées.
    	STARTUPINFO si;
    	PROCESS_INFORMATION pi;
     
    	succes= CreateProcess(
    		"C:/.../Mon_app.exe",	  /*lpApplicationName*/
    		"",			                      /*lpCommandLine*/
                    0,					       		  /*lpProcessAttributes*/
    		0,					      		  /*lpThreadAttributes*/
    		FALSE,							  /*bInheritHandles*/
    		0,								  /*dwCreationFlags*/
    		0,								  /*lpEnvironment*/
    		0,								  /*lpCurrentDirectory*/
    		&si,							  /*lpStartupInfo*/
    		&pi);							  /*lpProcessInformation*/

    ...c'est utile des vieux tp

    edit : Je naviguais sur le forum et j'ai décidé de répondre mais bon, jai remarquer trop tard la date de la discussion hehehe !! mais au moin ca empeche fearyourself de laissé croire qu'il n'y a pas de solution pour faire des process en windows !!! sacré facreur !

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/11/2010, 17h30
  2. Fermer et ouvrir une nouvelle fenêtre à chaque click
    Par anca2 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/03/2008, 17h05
  3. Ouvrir une fenêtre et la fermer après un certain temps
    Par MiJack dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/03/2005, 17h16
  4. [JFrame] Comment ouvrir une fenêtre maximiser
    Par dadg dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 11/12/2004, 18h38
  5. [Applet] ouvrir une fenêtre IE
    Par gl0be dans le forum Applets
    Réponses: 2
    Dernier message: 18/03/2004, 16h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo