Bonjour, Je voudrais savoir comment je passe 2 structs pour l� function callback. Quelq'un a une id�e?
Merci.
Bonjour, Je voudrais savoir comment je passe 2 structs pour l� function callback. Quelq'un a une id�e?
Merci.
Bonjour,
parce que il n'y a qu'un pointer pour data en callback, tu dois faire
et en callbacktypedef struct {
STRUCT1 *struct1;
STRUCT2 *struct2;
} STRUCT_A_CALLBACK;
Je ne sais pas d'autre solution.STRUCT_A_CALLBACK *my_struct = (STRUCT_A_CALLBACK*)user_data;
STRUCT1 *struct1 = my_struct->struct1;
STRUCT2 *struct2 = my_struct->struct2;
Bonne chance.
Fredy "KRUGER"
C'est effectivement la seule solution. Si les structures sont de m�me type et que le nombre d'�l�ment est connu, il peu aussi passer un tableau de structures en param�tre.
Alors mon problem c'est �a:
j'ai une interface glade, dans cette inteface j'ai une object avec 5 onglet. J'ai d�j� cre� 2 structures, la premier pour controler l� fen�tre principale:
typedef struct{
GtkBuilder *build;
GtkWidget *window;
}builder;
et la deuxi�me seulement pour controler les objets dans l� premier onglet:
typedef struct{
GtkWidget *button;
GtkWidget *label;
GtkWidget *label2;
}firstab;
Parfois, je besoin passer deux ou plus objets appartenant a diff�rents structures, par example:
Je besoin changer le titre de l� fen�tre principale et le titre d'une label. Je dois passer le widget window et le widget label a la callback, mais ils sont des structures diff�rents. Je suis en train de travailler avec des modules, c'est �a mon problem! Est-ce qu'il y a d'autres moyens pour faire �a? extern, pointeur vers la fonction? Merci.
Une id�e parmi tant d'autres.
Si tu as le pointeur de l'onglet dans le callback appel�, tu peux remonter jusqu'au widget parent de ton choix avec la fonction gtk_widget_get_parent_window ();.
Une autre id�e.
Propager le pointeur GtkBuilder *builder; dans la structure firstab. Tu pourras ainsi obtenir n'importe quel pointeur de ton interface.
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, y a moyen de faire plus propre, mais le principe est l� : tu centralises dans une structure repr�sentant ton interface graphique, ses diff�rents �l�ments. En passant juste un pointeur vers ta structure de type Gui, tu auras acc�s � tous les �l�ments de l'interface. Et pour ceux que tu ne stockes pas dans une variable, et que tu n'utilises qu'occasionnellement, il te reste toujours GtkBuilder pour y acc�der.
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 typedef struct { GtkWidget *button; GtkWidget *label; GtkWidget *label2; } FirstTab; typedef struct { GtkWidget *button; GtkWidget *label; GtkWidget *label2; } SecondTab; typedef struct { GtkWidget *button; GtkWidget *label; GtkWidget *label2; } ThirdTab; typedef struct { GtkBuilder *build; GtkWidget *window; FirstTab tab1; SecondTab tab2; ThirdTab tab3; } Gui;
Au fait, �vite le nommage First, Second, Third, etc., utilise plut�t un nom explicite indiquant le r�le de l'onglet.
Partager