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

whikie 99 Messages postés vendredi 24 juin 2005Date d'inscription 17 septembre 2005 Dernière intervention - 20 juil. 2005 à 14:46 - Dernière réponse : Alcantornet 89 Messages postés mardi 8 février 2005Date d'inscription 14 novembre 2007 Dernière intervention
- 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
Afficher la suite 

10 réponses

Répondre au sujet
Alcantornet 89 Messages postés mardi 8 février 2005Date d'inscription 14 novembre 2007 Dernière intervention - 21 juil. 2005 à 10:58
+3
Utile
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);

}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Alcantornet
KeniiyK 326 Messages postés vendredi 13 août 2004Date d'inscription 2 novembre 2007 Dernière intervention - 20 juil. 2005 à 19:07
0
Utile
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
Commenter la réponse de KeniiyK
Alcantornet 89 Messages postés mardi 8 février 2005Date d'inscription 14 novembre 2007 Dernière intervention - 20 juil. 2005 à 19:59
0
Utile
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.
Commenter la réponse de Alcantornet
whikie 99 Messages postés vendredi 24 juin 2005Date d'inscription 17 septembre 2005 Dernière intervention - 20 juil. 2005 à 21:49
0
Utile
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 ?
Commenter la réponse de whikie
Alcantornet 89 Messages postés mardi 8 février 2005Date d'inscription 14 novembre 2007 Dernière intervention - 21 juil. 2005 à 07:44
0
Utile
Essai d'utiliser la commande " exit(0); " , je crois qu'elle est portable.
Commenter la réponse de Alcantornet
whikie 99 Messages postés vendredi 24 juin 2005Date d'inscription 17 septembre 2005 Dernière intervention - 21 juil. 2005 à 08:01
0
Utile
non cela ne marche pas plus.

j'ai mis mis exit(0); a la place de return (0); aucun changement
Commenter la réponse de whikie
Alcantornet 89 Messages postés mardi 8 février 2005Date d'inscription 14 novembre 2007 Dernière intervention - 21 juil. 2005 à 09:49
0
Utile
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;

}
Commenter la réponse de Alcantornet
whikie 99 Messages postés vendredi 24 juin 2005Date d'inscription 17 septembre 2005 Dernière intervention - 21 juil. 2005 à 10:08
0
Utile
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
Commenter la réponse de whikie
whikie 99 Messages postés vendredi 24 juin 2005Date d'inscription 17 septembre 2005 Dernière intervention - 21 juil. 2005 à 11:17
0
Utile
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 ?
Commenter la réponse de whikie
Alcantornet 89 Messages postés mardi 8 février 2005Date d'inscription 14 novembre 2007 Dernière intervention - 27 juil. 2005 à 20:50
0
Utile
Oui, il peut-être encore les fichiers libglut32.a et libglut.a (et la dll glut32.dll), bon j'suis pas certain.
Commenter la réponse de Alcantornet

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.