[Opengl][Glut][Dev- C++ 4.9.9.2] Comment fermer un programme correctement ?

Résolu
whikie Messages postés 99 Date d'inscription vendredi 24 juin 2005 Statut Membre Dernière intervention 17 septembre 2005 - 20 juil. 2005 à 14:46
Alcantornet Messages postés 89 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 14 novembre 2007 - 27 juil. 2005 à 20:50
Bonjour a tous,

La question est celle ci : comment je peux faire pour fermer mon programme correctement si je veux faire un programme completement portable ?

Si je cree un projet avec Dev-C++ pour OpenGL et Glut il m'ouvre une fenetre ms-dos et ne ferme pas celle ci reste a l'ecran meme si je quitte mon programme ...

Je ne veux pas utiliser les instructions windows pour quitter puisque je voudrais faire du code portable.

J'espere avoir ete clair

Merci d'avance

10 réponses

Alcantornet Messages postés 89 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 14 novembre 2007
21 juil. 2005 à 10:58
Extrait de glut.h



#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)

#define GLUT_WINDOW_FORMAT_ID ((GLenum) 123)

#endif





alors peut etre essai de télécharger une nouvelle version ou remplace :



void Idle(){

if(glutGet(GLUT_WINDOW_FORMAT_ID)==0) exit(0);

}



par:



void Idle(){

if(glutGet(GLUT_WINDOW_X)==0 && glutGet(GLUT_WINDOW_Y)==0) exit(0);

}
3
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
20 juil. 2005 à 19:07
La fenetre CMD est optionnelle, avec visual studio dans les links : subsystem:console (pour avoir une console) ou subsystem:windows pour ne rien avoir....

KeniiyK
0
Alcantornet Messages postés 89 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 14 novembre 2007
20 juil. 2005 à 19:59
Hello,



Bon avec Dev-cpp pour ne pas voir la console il faut aller dans le menu
projet -> option de projet et puis dans l'onglet général choisis le
type "Win32GUI", et puis clique sur OK. Recompile tout et maintenent tu
ne devrait plus avoir de console.
0
whikie Messages postés 99 Date d'inscription vendredi 24 juin 2005 Statut Membre Dernière intervention 17 septembre 2005
20 juil. 2005 à 21:49
Effectivement je n'ai plus de console mais le programme n'est pas fermé completement.

Dans Dec-c++ je dois aller dans le menu Executer / Fermer programme pour le fermer definitivement.

Ca m'inquiete de lancer un programme et de ne pas l'arreter completement.

je suppose qu'il traine toujours un peu dans la memoire de l'ordi ...

A moins que je me trompe completement ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alcantornet Messages postés 89 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 14 novembre 2007
21 juil. 2005 à 07:44
Essai d'utiliser la commande " exit(0); " , je crois qu'elle est portable.
0
whikie Messages postés 99 Date d'inscription vendredi 24 juin 2005 Statut Membre Dernière intervention 17 septembre 2005
21 juil. 2005 à 08:01
non cela ne marche pas plus.

j'ai mis mis exit(0); a la place de return (0); aucun changement
0
Alcantornet Messages postés 89 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 14 novembre 2007
21 juil. 2005 à 09:49
J'ai trouvé une solution :



rajoute ceci dans ta fonction main si tu n'as pas de fonction Idle (ajoute-le avant glutMainLoop();) :



glutIdleFunc(Idle);



Puis rajoute cette fonction avant ta fonction main :



void Idle(){

if(glutGet(GLUT_WINDOW_FORMAT_ID)==0) exit(0);

}



Si tu as déja une fonction Idle ajout simplement ce code dans ta fonction Idle :



if(glutGet(GLUT_WINDOW_FORMAT_ID)==0) exit(0);



exemple bidon:



#include <GL/glut.h>

#include <stdlib.h>

#include <stdio.h>



void affichage(){

glutSwapBuffers();

}



void Idle(){

if(glutGet(GLUT_WINDOW_FORMAT_ID)==0) exit(0);

}



int main(int argc,char **argv)

{

// initialisation de glut et creation de la fenetre

glutInit(&argc,argv);

glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

glutInitWindowPosition(10,10);

glutInitWindowSize(640,480);

glutCreateWindow("Test");



// Initialisation d'OpenGL

glClearColor(0.0,0.0,0.0,0.0);




// Enregistrement des fonctions de rappel

glutDisplayFunc(affichage);

glutIdleFunc(Idle);



// Entree dans la boucle principale glut

glutMainLoop();

return 0;

}
0
whikie Messages postés 99 Date d'inscription vendredi 24 juin 2005 Statut Membre Dernière intervention 17 septembre 2005
21 juil. 2005 à 10:08
merci de tes recherches, j'ai bien cru que tu avais la reponse.
mais
HELAS Je ne comprend pas pourquoi il ne veut pas de :

GLUT_WINDOW_FORMAT_ID

j'ai refait un projet vierge avec ton code et j'obtiens :

Compilateur: Default compiler
Building Makefile: "C:\Dev-Cpp\Makefile.win"
Exécution de make...
make.exe -f "C:\Dev-Cpp\Makefile.win" all
g++.exe -c mainfermertureportable.cpp -o mainfermertureportable.o


mainfermertureportable.cpp: In function `void Idle()':
mainfermertureportable.cpp:10: error: `GLUT_WINDOW_FORMAT_ID' undeclared (first use this function)
mainfermertureportable.cpp:10: error: (Each undeclared identifier is reported only once for each function it appears in.)


make.exe: *** [mainfermertureportable.o] Error 1


Exécution terminée
0
whikie Messages postés 99 Date d'inscription vendredi 24 juin 2005 Statut Membre Dernière intervention 17 septembre 2005
21 juil. 2005 à 11:17
merci merci

ca marche pour la deuxieme version
void Idle(){
if(glutGet(GLUT_WINDOW_X)==0 && glutGet(GLUT_WINDOW_Y)==0) exit(0);
}

je n'arrive pas a installer la version 3.7 de glut .Je galere depuis ce matin (depuis que tu m'as parlé de : GLUT_WINDOW_FORMAT_ID.)

je dois juste mettre le nouveau fichier glut.h a la place de l'autre ?
ou y a t'il d'autres fichiers a remplacer ?
0
Alcantornet Messages postés 89 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 14 novembre 2007
27 juil. 2005 à 20:50
Oui, il peut-être encore les fichiers libglut32.a et libglut.a (et la dll glut32.dll), bon j'suis pas certain.
0
Rejoignez-nous