[MFC] CListCtrl : mettre une image à coté du texte...

CListCtrl : mettre une image à coté du texte... [MFC] - Programmation

Marsh Posté le 24-02-2002 à 21:10:30    

Ce code compile mais ne marche pas, quelqu'un peut-il m'aider ?
m_rep c'est la CListCtrl
 
CImageList img;
img.Create(16,16,ILC_COLOR4,1,1);
img.Add(AfxGetApp()->LoadIcon(IDI_REP));
m_rep.SetImageList(&img,LVSIL_NORMAL); //j'ai essayé en LVSIL_SMALL ça fait pareil
m_rep.InsertItem(n,f.name,0);
 
merci

Reply

Marsh Posté le 24-02-2002 à 21:10:30   

Reply

Marsh Posté le 25-02-2002 à 09:00:26    

heu, juste une question... c code, t'espères que ça va t'afficher tes images !?

Reply

Marsh Posté le 25-02-2002 à 20:00:55    

et oui, pourquoi y a un problème ?
Quand je dis image, c'est icone (j'espère qu'il y avait pas de mal entendu la dessus)

 

[jfdsdjhfuetppo]--Message édité par antsite--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 26-02-2002 à 12:26:17    

et... t sur que ça sert à ça !?
t'as bien lu la doc ? moi à première vue, je dirais que ça sert à stocker des images en mémoire (qui peuvent d'ailleur être autre chose que des incônes, comme des Bitmaps), pas à les afficher...
essaye plutot avec un CListCtrl.

 

[jfdsdjhfuetppo]--Message édité par El_Gringo--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 26-02-2002 à 13:21:40    

tu as bien lu le sujet ?
m_rep.InsertItem(n,f.name,0);
à ton avis ça sert à quoi ?
0 c'est la position de l'image dans la litse
aller sans rancune !

Reply

Marsh Posté le 26-02-2002 à 14:14:07    

Et tu trouves pas bisard qu'a aucun endroit, ni dans le constructeur, ni dans la méthode Create, on ne précise de CRect ou autres coordonnées ! Comment tu choisis ou tu le place ton truc !
ça sert à organiser des images en mémoire ton CImageList...
c pas dit que c'était pas une liste. G dit que c une liste, pas pour afficher, ms pour "ranger" et garder chargées des images en mémoire... d'ou le InsertItem
TT à l'heure j'en était pas sur, ms là, je suis sur à 100%. Preuve formelle: CImageList n'hérite pas de CWnd alors que tt les contrôles qui s'affichent sont des "fenêtres", autrement, héritent de CWnd.

 

[jfdsdjhfuetppo]--Message édité par El_Gringo--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 26-02-2002 à 14:17:38    

y a un truc que je capte pas
il dit que m_rep c'est une CListCtrl et toi tu lui dis d'utiliser plutot une CListCtrl :??:
Je connais pas les MFC, mais la façon dont il procède semble +/- logique (en comparant avec la manière dont fonctionne les composants de Borland)... pas besoin de donner de coordonnées, puisque chaque item de la CListCtrl a une image associée, image dont on donne un index, et qui provient de la CImageList associée.

 

[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 26-02-2002 à 14:19:57    

ha...
évidement, si je lis mal...
Alors là, ça fait parti des moment ou on se sent très seul. Ou on se fait tout petit...
dsl :cry:

Reply

Marsh Posté le 26-02-2002 à 14:20:30    

D'abord je t'ai pas pris pour un con mais si tu le prends comme ça ben à mon tour de te dire que si t'es pas capable de t'expliquer et d'être tolérant ben casse toi du Forum.
 
Merci Antp, si ça peut m'aider à me faire comprendre, tu as tout à fait raison.

Reply

Marsh Posté le 26-02-2002 à 14:22:01    

j'avais pas lu ton dernier post El_Gringo, alors moi aussi je te fais mes excuses.

Reply

Marsh Posté le 26-02-2002 à 14:22:01   

Reply

Marsh Posté le 26-02-2002 à 14:24:37    

El_Gringo a écrit a écrit :

ha...
évidement, si je lis mal...
Alors là, ça fait parti des moment ou on se sent très seul. Ou on se fait tout petit...
dsl :cry:  




 
:D ça arrive
enfin sur un forum ça va encore
quand ça arrive "en vrai" c'est encore pire :sweat:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 26-02-2002 à 14:33:46    

Essaye de faire voir déja si y a des item dans ta CListCtrl, avec un GetItemCount...

Reply

Marsh Posté le 26-02-2002 à 14:34:24    

antp a écrit a écrit :

 
 
:D ça arrive
enfin sur un forum ça va encore
quand ça arrive "en vrai" c'est encore pire :sweat:  




 
Non, en vrai, j'aurai mis un coup de tête avant de me rendre compte que j'avais tord ! ça se serai beaucoup mieux passé ! :D

Reply

Marsh Posté le 26-02-2002 à 18:52:52    

Donc pour en revenir au topic, il y a bien des items dans la liste (ils sont affichés donc je pense pas qu'il y est de problèmes de ce coté).
J'ai essayé avec un Bitmap à la place de l'icone, idem. Quand je met LVSIL_SMALL, il y a cette fois à la place de l'icone un petit carré blanc, c'est à dire qu'il pense bien mettre une icone mais il l'affiche pas.
Mon icone est bien 16x16 en 16 couleurs.

Reply

Marsh Posté le 26-02-2002 à 19:40:17    

logiquement ça serait small au lieu de normal (normal c'est les 32x32)
ton imagelist, elle est pas par hasard détruite après que tu sois sorti de la fonction ? (variable locale)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 26-02-2002 à 20:10:14    

pour l'image list je pense pas car sinon comment l'utiliser ? Non à mon avis et d'après ce que j'ai pu comprendre dans la doc, un seul appel suffit et après il n'y a plus qu'à donner la position de l'image dans cette liste.

Reply

Marsh Posté le 26-02-2002 à 22:32:03    

oui, mais ta liste ne doit pas etre detruite
 
si tu fais:
 
void init() {
  CImageList img;
  img.Create(16,16,ILC_COLOR4,1,1);
  img.Add(AfxGetApp()->LoadIcon(IDI_REP));
  m_rep.SetImageList(&img,LVSIL_SMALL);
  m_rep.InsertItem(n,f.name,0);
}
 
dès qu'on sort de la fonction l'image list est détruite, et donc la CListCtrl n'a plus rien à afficher :/


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 27-02-2002 à 10:55:34    

d'accord mais ça c'est dans la fonction init() alors il devrait pas y avoir de problèmes non ?
m_rep.InsertItem(n,f.name,0);

Reply

Marsh Posté le 27-02-2002 à 12:06:17    

antsite a écrit a écrit :

d'accord mais ça c'est dans la fonction init() alors il devrait pas y avoir de problèmes non ?
m_rep.InsertItem(n,f.name,0);  




 
Ouais, j'pense que c bien possible qu'il ai raison antp. Essaye de mettre ton "CImageList img;" en variable globale (si t en C) ou en membre de l'objet qui à cette méthode "Init" (si t en C++).
c vite essayé. T'as rien à perdre et tt à gagner...

 

[jfdsdjhfuetppo]--Message édité par El_Gringo--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 27-02-2002 à 14:03:14    

J'essaye ça ce soir (je suis pas chez moi la)

Reply

Marsh Posté le 27-02-2002 à 14:53:59    

antsite a écrit a écrit :

d'accord mais ça c'est dans la fonction init() alors il devrait pas y avoir de problèmes non ?




 
bhen si pcq dès que tu sors de Init ta liste elle est détruite, car il s'agit d'une variable locale


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 27-02-2002 à 18:21:42    

Et bien oui c'était ça ! Il ne me reste plus qu'à vous remercier tous les deux et à vous dire à une prochaine fois !
a+
  ANT  :hello:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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