Bonjour, 
Je me permets de revenir sur le sujet, espérant pouvoir trouver une bonne âme pour m'aider.
J'ai pu glaner sur le net quelques exemples, malheureusement pour la plupart "très ancien" et "presque toujours en anglais.
Ce qui n'est pas mon langage préféré... d'où certainement des erreurs de compréhension ou d'interprétation.
Et bien sûr, aucun ne fonctionne, sans que bien évidement je ne sache pourquoi... sinon je ne serais pas là à vous em*** 
Je vous explique:
Dans main.h:
J'ai créé une structure (s_variables) dans laquelle j'ai mis mes widgets.
Dans main.c:
J'ai créé ma variable de structure. (s_variables maVar);
J'ai initialisé la fenêtre principale, puis passé l'adresse de maVar à une fonction. ( ma_Fonction(&maVar, maVar) );
Que j'ai réceptionné de cette façon. ( ma_Fonction(s_variables *pVar, s_variables maVar) )
Puis j'ai utilisé sans problème, mes box, mes labels, mes frames ... etc. ( pVar->mesWidget)
Mes problèmes apparaissent lorsque j'essaye d'utiliser la fonction G_CALLBACK...
Si le dernier paramètre est NULL, pas de problème, ça fonctionne correctement.
Les problèmes surgissent, dès que j'essaie de faire passer les paramètres de la structure.
Voilà comment je procède:
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
|
g_signal_connect(G_OBJECT(pVar->pLabel1), "enter-notify-event",
G_CALLBACK(Modif_label), &maVar);
//Fonction pour le changement du Label et du curseur de souris.
extern void Modif_label(GtkWidget *pLabel1, gpointer pData)
{
//Récupération de pData.
s_variables *p = pData;
//Changement curseur.
GdkCursor *pCursor = NULL;
pCursor = gdk_cursor_new(GDK_HAND2);
GdkWindow *pGdk_Window = NULL;
pGdk_Window = gtk_widget_get_window(GTK_WIDGET(p->pWindow));
gdk_window_set_cursor(pGdk_Window, pCursor);
//Modification du texte.
gtk_label_set_text(GTK_LABEL(p->pLabel1), "zzz");
//Paramètre non utilisé.
(void) pLabel1;
} |
Pas de plantage à la compilation, ma fenêtre apparaît correctement, mais les changements demandés ne sont pas présent.
J'espère avoir été assez explicite dans mon exposé et que vous pourrez intervenir pour me signifier où j'ai fauté.
Mais SVP ...
...
Avec mes remerciements anticipés pour toute l'aide que vous saurez m'apporter.
Bonne journée.
Claude.
Partager