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 :

C, GTK+ et postgresql : récupérer le pointeur de connexion.


Sujet :

GTK+ avec C & C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut C, GTK+ et postgresql : récupérer le pointeur de connexion.
    Bonjour,
    Je suis en train d'explorer l'utilisation de postgresql pour stocker des données que l'utilisateur va saisir via un programme C/GTK+.
    Le prototype fonctionne très bien.
    Pour coller un peu plus aux recommandations du "gnome developper center", j'ai voulu faire ça, sans trop réfléchir :
    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
     
    int main (int argc, char *argv[])
    {
        GtkApplication *appli;
        int statut;
        PGconn *conn = NULL;
     
        appli = gtk_application_new("TiArn.Nantoo.PConstantes", G_APPLICATION_FLAGS_NONE);
        g_signal_connect(appli, "startup", G_CALLBACK(connexiondb), conn);
        g_signal_connect(appli, "activate", G_CALLBACK(cb_vueprincipale), conn);
        g_signal_connect(appli, "shutdown", G_CALLBACK(deconnexiondb), conn);
        statut = g_application_run(G_APPLICATION(appli), argc, argv);
        g_object_unref(appli);
     
    	return statut;
    }
    Mon problème :
    Comment récupérer le pointer de la connexion à ma database que j'ai initié via le signal "startup" ?
    La doc est assez pauvre sur le sujet et je me demande comment passer ce pointeur au signal "activate" ?
    Quand j'utilise le code ci-dessus, le signal "activate" passe en paramètre le pointer conn qui a pour valeur NULL.

    Merci par avance.

  2. #2
    Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2017
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2017
    Messages : 43
    Points : 64
    Points
    64
    Par défaut
    Bonsoir,

    Peut-être ainsi:
    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
     
    typedef struct _MyApp {
        PGconn *conn;
    } MyApp;
     
    int main (int argc, char *argv[])
    {
        GtkApplication *appli;
        int statut;
        MyApp *conn = g_new0(MyApp);
     
        appli = gtk_application_new("TiArn.Nantoo.PConstantes", G_APPLICATION_FLAGS_NONE);
        g_signal_connect(appli, "startup", G_CALLBACK(connexiondb), conn);
        g_signal_connect(appli, "activate", G_CALLBACK(cb_vueprincipale), conn);
        g_signal_connect(appli, "shutdown", G_CALLBACK(deconnexiondb), conn);
        statut = g_application_run(G_APPLICATION(appli), argc, argv);
        g_object_unref(appli);
     
    	return statut;
    }
    Ou tout simplement en passant un pointeur de pointer g_signal_connect(appli, "startup", G_CALLBACK(connexiondb), (gpointer)&conn);:

    Bye

  3. #3
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    La bonne méthode est effectivement soit de passer par une structure qui contiendra les différents éléments de ton application, et où tu pourras initialiser un champ correspondant au pointeur vers ta connexion. L'autre solution si c'est la seule information que tu as à échanger, c'est d'utiliser un pointeur de pointeur (sans le cast en gpointer, qui est inutile). Si tu n'as pas trop l'habitude, l'endroit où c'est le plus utilisé dans l'API GLIb, GTK c'est pour GError. Les fonctions qui veulent renvoyer une erreur renvoient un booléen pour savoir si l'appel a fonctionné ou pas, et un GError pour avoir plus d'information. Pour cela on leur passe l'adresse d'un pointeur, qu'elles initialisent au besoin.

    Et parce que les pointeurs c'est fun:
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup à vous deux.
    Le pointeur de pointeur me convient très bien. C'est l'idéal pour ce que je veux faire.
    Encore merci et bonne journée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PostgreSQL] [PostGreSQL] récupérer les champs booléens sous forme "false" au lieu de "f"
    Par novices dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/02/2007, 11h48
  2. GTK+ comparaison entier valeur du pointeur
    Par Emyleet dans le forum GTK+ avec C & C++
    Réponses: 10
    Dernier message: 21/07/2006, 16h28
  3. [PostGreSQL] Récupérer les noms des colonnes
    Par Olivier14 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 21/02/2006, 19h51
  4. Réponses: 14
    Dernier message: 14/03/2005, 10h16
  5. [Ada] Récupérer un pointeur sur un objet existant
    Par vincnet500 dans le forum Ada
    Réponses: 1
    Dernier message: 14/11/2004, 15h26

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