Bonjour,
Existe t'il une méthode pour stopper un programme lors de l'affichage d'une boite de dialogue avec un message d'erreur par exemple ?
Ensuite en fermant cette boite de dialogue le programme continue...
Merci beaucoup pour votre aide![]()
Bonjour,
Existe t'il une méthode pour stopper un programme lors de l'affichage d'une boite de dialogue avec un message d'erreur par exemple ?
Ensuite en fermant cette boite de dialogue le programme continue...
Merci beaucoup pour votre aide![]()
Ca dépend. (j'aime bien ce genre de réponse. )
Plus sérieusement tu peux rendre ta fenêtre de dialogue modale. C'est à dire qu'elle vient par dessus toutes les autres et tant qu'elle n'est pas fermée il est impossible d'accéder aux autres fenêtres de la même application.
Quand j'écris que ca dépend c'est pour mettre un bémol sur les mots "stopper un programme". Si par exemple ton application a lancé des threads, ils continueront de tourner lors de l'affichage de la fenêtre de dialogue.
Utilisation de Glade avec Gtk+
Code::Blocks et Gtk+ sous Windows
Programmation orientée objet avec Gtk+ v3
- N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk
Et c'est justement ce dernier point que je souhaiterais aborder.
Exemple tout con, pour tester les choses j'ai fais une boucle toute bête i++ pendant laquelle s'ouvre la boite de dialogue.
Bien j'aimerais que la boucle stoppe lors de l'affichage de la boite de dialogue.
Le fait que les autres fenêtres soient inutilisables est très intéressant aussi, je vais m'en servir. Mais le top c'est de dire au programme en C qui calcule derrière "toi tu t'arrêtes fissa et tu reprends quand je te le dis"![]()
J'avais pensé à coupler lors de l'affichage de la fenêtre un petit getchar(); ....
Le problème est que ton programme tourne dans une boucle Gtk principale. Toutes les fenêtres secondaires ouvertes font parties de la même boucle.
A priori je déclarerai un drapeau qui mis à FALSE laisserai tourner les boucles internes et à TRUE les arrêterai. Ca veut dire aussi que les boucles doivent intégrer le test de l'état du drapeau. C'est peut être un peu lourd.
Autre manière de faire serait d'utiliser les threads avec les mutex. Mais il faut bien penser son code avant de se lancer là dedans.
Utilisation de Glade avec Gtk+
Code::Blocks et Gtk+ sous Windows
Programmation orientée objet avec Gtk+ v3
- N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk
Peut être une autre solution. Lancer une deuxieme boucle gtk_main(); indépendante de l'interface principale dans laquelle est exécutée la fenêtre de dialogue.
Pendant ce temps on peut bloquer la première boucle gtk avec la fonction gboolean gtk_main_iteration_do (gboolean blocking);.
A tester...
Utilisation de Glade avec Gtk+
Code::Blocks et Gtk+ sous Windows
Programmation orientée objet avec Gtk+ v3
- N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk
Bon merci beaucoup pour ton aide. Je vois que le problème est bien plus épineux que prévu![]()
La partie code en C est vraiment trop imposante pour que je puisse me permettre de le modifier trop profondément. Je cherchais une solution simple qui me permette de le stopper, mais si c'est impossible sans grosses manips, tant pis![]()
Merci beaucoup encore Gerald![]()
Partager