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

GTK+ avec C & C++ Discussion :

Transferer variable vers une autre fonction.


Sujet :

GTK+ avec C & C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Transferer variable vers une autre fonction.
    Bonjour a tous.
    Voila j'expose mon problème en espérant que quelqu'un puisse le résoudre, je fourni le code source ci-après.
    Donc voila, dans la fonction "void OnButton", je récupère ( dans "sChemin" l'emplacement d'un fichier sélectionné par l'utilisateur.
    J'aimerais parvenir a faire transféré cette vraiable (soit l'emplacement du fichier) dans la fonction "void essaiaff" afin de l'utiliser.

    voici le code source complet :

    main.c :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    #include <stdlib.h>
    #include <gtk/gtk.h>
    #include "callback.h"
     
     
    int main(int argc,char **argv)
    {
        /* Initialisation des variables */
        GtkWidget *pWindow;
        GtkWidget *pButton;
        GtkWidget *pessai;
        GtkWidget *pVBox;
     
        gchar *test; // test
     
        /* Initialisation de Gtk */
        gtk_init(&argc,&argv);
     
        /* Fenetre */
        pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(pWindow), "Emplacement fichier");
        gtk_window_set_default_size(GTK_WINDOW(pWindow), 320, 200);
        gtk_window_set_position(pWindow, GTK_WIN_POS_CENTER);
     
        /* Creation de la GtkBox verticale */
        pVBox = gtk_vbox_new(TRUE, 0);
        /* Ajout de la GtkVBox dans la fenetre */
        gtk_container_add(GTK_CONTAINER(pWindow), pVBox);
     
        /* Creation du bouton "selection" */
        pButton=gtk_button_new_with_mnemonic("_Selectionner fichier...");
        gtk_container_add(GTK_CONTAINER(pVBox), pButton);
     
        /* Creation du bouton "Adresse" */
        pessai=gtk_button_new_with_mnemonic("_Emplacement");
        gtk_container_add(GTK_CONTAINER(pVBox), pessai);
     
        /* Evenements */
        g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
        g_signal_connect(G_OBJECT(pButton), "clicked", G_CALLBACK(OnButton), &test);
        g_signal_connect(G_OBJECT(pessai), "clicked", G_CALLBACK(essaiaff), NULL); // Bouton Essai // &heure
     
        /* On affiche la fenetre */
        gtk_widget_show_all(pWindow);
     
        gtk_main();
        printf("%s\n", &test);
        return EXIT_SUCCESS;
    }
    callback.c :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    void OnButton(GtkWidget *pWidget, gpointer data)
    {
        GtkWidget *pFileSelection;
        GtkWidget *pDialog;
        GtkWidget *pParent;
        gchar *sChemin;
     
        pParent = GTK_WIDGET(NULL);
     
        /* Creation de la fenetre de selection */
        pFileSelection = gtk_file_chooser_dialog_new("Ouvrir...",
    	GTK_WINDOW(pParent),
    	GTK_FILE_CHOOSER_ACTION_OPEN,
    	GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
    	GTK_STOCK_OPEN, GTK_RESPONSE_OK,
    	NULL);
     
        /* On limite les actions a cette fenetre */
        gtk_window_set_modal(GTK_WINDOW(pFileSelection), TRUE);
     
        /* Affichage de la fenetre */
        switch(gtk_dialog_run(GTK_DIALOG(pFileSelection)))
        {
            case GTK_RESPONSE_OK:
                /* Recuperation de l'emplacement */
                sChemin = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(pFileSelection));
     
     
     
                printf("%s\n", data);
    	    g_free(sChemin);
                break;
            default:
                break;
        }
        gtk_widget_destroy(pFileSelection);
    }
     
     
     
     
     
    void essaiaff(GtkWidget *pWidget, gpointer data)
    {
     
    }
    Je vous remercie a tous d'avance.
    kelepoc.

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 293
    Points : 4 943
    Points
    4 943
    Billets dans le blog
    5
    Par défaut
    Une idée parmi tant d'autres
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    void OnButton(GtkWidget *pWidget, gpointer data)
    {
        GtkWidget *pFileSelection;
        GtkWidget *pDialog;
        GtkWidget *pParent;
        gchar *sChemin;
     
        pParent = GTK_WIDGET(NULL);
     
        /* Creation de la fenetre de selection */
        pFileSelection = gtk_file_chooser_dialog_new("Ouvrir...",
    	GTK_WINDOW(pParent),
    	GTK_FILE_CHOOSER_ACTION_OPEN,
    	GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
    	GTK_STOCK_OPEN, GTK_RESPONSE_OK,
    	NULL);
     
        /* On limite les actions a cette fenetre */
        gtk_window_set_modal(GTK_WINDOW(pFileSelection), TRUE);
     
        /* Affichage de la fenetre */
        switch(gtk_dialog_run(GTK_DIALOG(pFileSelection)))
        {
            case GTK_RESPONSE_OK:
                /* Recuperation de l'emplacement */
                sChemin = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(pFileSelection));
     
     
     
                printf("%s\n", data);
                essaiaff(NULL, sChemin);
    	    g_free(sChemin);
                break;
            default:
                break;
        }
        gtk_widget_destroy(pFileSelection);
    }
     
     
     
     
     
    void essaiaff(GtkWidget *pWidget, gpointer data)
    {
             gchar *sChemin=(gchar*)data;
     
             printf("%s\n", sChemin);
    /*Attention tout de même. data sera libéré après la fin de cette fonction. Fais-en une copie si besoin avant.*/
    }

Discussions similaires

  1. [Js Photoshop] Appel d'une variable dans une autre fonction
    Par bugg01 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 29/04/2014, 13h45
  2. Utiliser une variable dans une autre fonction
    Par zazze69 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 04/12/2012, 10h34
  3. [XL-2003] Copie d'une feuille Excel a dimension variable vers une autre
    Par pachat dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/03/2012, 02h46
  4. passer des variables vers une autre form
    Par abdeladim7 dans le forum C#
    Réponses: 5
    Dernier message: 28/01/2010, 13h46
  5. utilisation des variables d'une autre fonction
    Par naim2009 dans le forum Interfaces Graphiques
    Réponses: 6
    Dernier message: 08/01/2009, 10h07

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