GTK clist et images

GTK clist et images - C - Programmation

Marsh Posté le 02-06-2005 à 11:18:15    

Bonjour, j'aimerais intégrer des images dans certaines cases de ma Clist à l'aide des fonctions gtk_clist_set_pixmap, mais rien ne marche  :heink:  
 

Code :
  1. GdkPixmap *icon1;
  2. GdkBitmap *mask;
  3. icon1 = gdk_pixmap_create_from_xpm(NULL, &mask, NULL, "icon1.xpm" );
  4. gtk_clist_set_pixmap(GTK_CLIST (pApp->clist_banni), 0, 3, icon1, NULL);


 
J'ai surement oublié quelque chose et/ou mal compris certains points.
Merci de m'éclairer  :)
 
Autre question, peut on intégrer les images que l'on utilise dans le binaire directement (à la compilation), pour ne pas avoir un répertoire contenant les différentes images ?


---------------
BiBi Max
Reply

Marsh Posté le 02-06-2005 à 11:18:15   

Reply

Marsh Posté le 02-06-2005 à 21:16:58    

Un ptit up pour la forme ;-)

Reply

Marsh Posté le 06-06-2005 à 12:20:26    

Bonjour
Il est possible de déclarer son pixmap dans un fichier .h
sous forme d'une variable globale de type char
puis de faire un #include quand on le veut si le xpm n'est pas trop gros.
voici un forum spécialisé dans le GTK+
http://forums.apinc.org/viewforum.php?f=12
Bon courage

Reply

Marsh Posté le 06-06-2005 à 21:17:12    

db__ a écrit :

Il est possible de déclarer son pixmap dans un fichier .h
sous forme d'une variable globale de type char


Une globale dans un . h, ça me fait gerber...
 
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 08-06-2005 à 13:09:52    

Bonjour
Je vais me risquer à un difficile exercice de justification.
Une image xpm est grande consomatrice d'octets. Ces octets sont définis donc ils prendront place dans le segment des données initialisées. Je ne sais pas ce que fait le compilateur à l'initialisation des variables locales dans la pile quand elles sont prédéfinis. Si c'est une recopie, il vaut mieux que la variable soit globale. Sinon si le C le permet, il est peut être possible de faire le #include dans la fonction lors de la déclaration des variables locales ?
Le chargement de l'image depuis un fichier par le programme étant exclu, j'espère une proposition pour ce faire plus propre que celle que je propose et qui est empruntée au livre sur le GTK de chez Eyrolles.
Merci Emmanuel d'éclairer ma lanterne.
Cordialement

Reply

Marsh Posté le 08-06-2005 à 16:44:29    

db__ a écrit :

Je vais me risquer à un difficile exercice de justification.
Une image xpm est grande consomatrice d'octets. Ces octets sont définis donc ils prendront place dans le segment des données initialisées. Je ne sais pas ce que fait le compilateur à l'initialisation des variables locales dans la pile quand elles sont prédéfinis. Si c'est une recopie, il vaut mieux que la variable soit globale. Sinon si le C le permet, il est peut être possible de faire le #include dans la fonction lors de la déclaration des variables locales ?
Le chargement de l'image depuis un fichier par le programme étant exclu, j'espère une proposition pour ce faire plus propre que celle que je propose et qui est empruntée au livre sur le GTK de chez Eyrolles.


Je ne met pas en cause le choix d'une globale (surtout qu'elle sera probablement en lecture seule). Ce qui est gerbou, c'est de la définir dans un .h.
 
Avant toute chose, lire ceci :
 
http://mapage.noos.fr/emdel/notes.htm#globales
 
Et si tu as confondu définition et declaration, tu as gagné le droit de nettoyer mon clavier plein de gerbou avec la langue...
 
http://mapage.noos.fr/emdel/notes.htm#definitions


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 09-06-2005 à 12:52:52    

Bonjour
Je ne confond pas la déclaration et la définition et je sais que les fichiers .h sont plutôt fait pour faire des déclarations.
Dans le cas de l'image xpm, le fichier ne contient qu'une seule définition.  
Pourquoi cette méthode :  
les images xpm sont toujours des icônes et il est légitime d'employer plusieurs fois dans des programmes différents les icônes que l'on a définis.
Il est possible de le faire en faisant un copier coller, cela est sans doute plus propre mais plus fatigant et la paresse naturelle fait que la méthode de l'include d'un fichier qui ne contient qu'une seule définition convient au programmeur feignant que je suis. J'admet volontier que ce n'est pas génial mais à part le copier coller je ne vois pas d'autre méthode pour faire cela. S'il y en a une aussi simple je suis preneur.
A propos de la page, je pense que la méthode d'accès au bit par | & ^ est largement plus usité que les champs de bits notament par les développeurs de GTK qui usent abondament du #define pour accéder au bit voulu par des symboles.
extrait de la page sur les définitions:
une déclaration est aussi une définition, mais que l'inverse n'est pas toujours vrai
je ne suis pas vraiment d'accord.
Une définition est toujours une déclaration tandis qu'une déclaration n'est pas une définition.
A l'édition de lien une variable ou fonction déclarée mais non définie provoquera une erreur. Voir le nombre de programmeurs débutants qui pensent qu'on résoud les problèmes de lien à grand coup d'include supplémentaire !
J'espère ne pas avoir ecrit trop de bétises
Cordialement

Reply

Marsh Posté le 09-06-2005 à 13:07:38    

db__ a écrit :

Je ne confond pas la déclaration et la définition et je sais que les fichiers .h sont plutôt fait pour faire des déclarations.
Dans le cas de l'image xpm, le fichier ne contient qu'une seule définition.  
Pourquoi cette méthode :  
les images xpm sont toujours des icônes et il est légitime d'employer plusieurs fois dans des programmes différents les icônes que l'on a définis.


Qu'est-ce qui empêche d'utiliser une globale dans un . c (définition) et une extern dans un .h (déclaration) ? Tu me dois un nouveau clavier...
 
La méthode que tu proposes fonctionne si on défini l'objet 'static', mais il est reproduit à chaque fois qu'on fait un include... Je préfère garder la mémoire pour les traitement utiles...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed