apparition de console malgré la compilation en mode windows (GUI Application) avec GTK
Bonjour à tous,
J'ai un problème que je ne sais résoudre, mais ne suis pas totalement sûr que ce problème vienne de GTK+. Je le soupconne tout de même, je la pose donc ici. N'hésitez pas à me dire si je suis hors sujet.
Je développe des codes GTK avec Code::Blocks et je les compile en mode "release" c'est à dire sans l'apparition d'un console en mode texte. Jusqu'ici tout va bien.
Le code que je développe doit - à l’occasion - lancer momentanément d'autres applications, et j'utilise la fonction C system() pour ca. Voici un exemple de code qui lance Word (sur une machine tournant sous windows) lorsque l'utilisateur clique sur un bouton :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| #include <stdlib.h>
#include <gtk/gtk.h>
#include <string.h>
int main(int argc,char **argv)
{
GtkWidget* pWindow;
GtkWidget* pBouton;
gtk_init(&argc,&argv);
void lancer_word(GtkButton *button, gpointer user_data); /* fonction callback sur le boutton */
pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(pWindow), "lancer un programme exterieur");
/* Creation du bouton */
pBouton=gtk_button_new_with_label("Lancer word");
/* On ajoute le bouton a l'intérieur de la fenêtre */
gtk_container_add(GTK_CONTAINER(pWindow), pBouton);
/* Affichage de la fenêtré et de tout ce qu'il contient */
gtk_widget_show_all(pWindow);
/* Connexion des signaux */
g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
g_signal_connect(G_OBJECT(pBouton), "clicked", G_CALLBACK(lancer_word), NULL);
gtk_main();
return EXIT_SUCCESS;
}
void lancer_word(GtkButton *button, gpointer user_data)
{
char tempo[500], guillemet[2];
guillemet[0]='\042';
guillemet[1]='\0';
(void)sprintf(tempo,"%sC:\\Program Files (x86)\\Microsoft Office\\Office12\\winword.exe%s",guillemet,guillemet);
(void)system(tempo);
} |
Ca marche bien, sauf à un détail près : En même temps que l'application est lancée, une fenêtre console vide s'ouvre, ce qui n'est pas ni utile, ni souhaitable. Ceci ne dépend évidement pas de l'appli extérieure lancée. Est-ce GTK+ qui génère ca lorsqu'un fonction système est invoquée ? En clair : Comment se débarrasser de ce truc ? Je ne crois pas que ceci vienne des options de compilation, car l'appli, par défaut, se lance bien sans console..
Toute aide sur ce point est la bienvenue.
Cordialement, Eric.