CListCtrl.SortItems(...) [resolu] - C++ - Programmation
Marsh Posté le 08-04-2003 à 09:51:12
T arrives a faire une comparaison de deux CString avec un <= ou >= toi
Marsh Posté le 08-04-2003 à 09:54:26
VisualC++ a écrit : T arrives a faire une comparaison de deux CString avec un <= ou >= toi |
c'est ce que j'avais vu sur un site. Et je leur ais fait confiance mais je vais regarder a ca et je reviens si j'ai toujours un probleme.
Marsh Posté le 08-04-2003 à 09:54:36
VisualC++ a écrit : T arrives a faire une comparaison de deux CString avec un <= ou >= toi |
+1
c'est quoi ce bins ?
Marsh Posté le 08-04-2003 à 09:56:16
ReplyMarsh Posté le 08-04-2003 à 09:56:53
il me semblait bien qu'ils avaient quand meme merde dans l'MSDN
error C2664: 'strcmp' : cannot convert parameter 1 from 'class CString' to 'const char *'
Marsh Posté le 08-04-2003 à 09:58:50
Oui mais tu as le droit d'utiliser le compare membre de la classe CString quand mm
Edit : Ce qui donnerait
Code :
|
Marsh Posté le 08-04-2003 à 10:00:21
Les opérateurs ne devraient pas exister en POO
Marsh Posté le 08-04-2003 à 10:01:59
Harkonnen a écrit : Les opérateurs ne devraient pas exister en POO |
ouais. je me suis fait induire en erreur par un site et je suis tombe dans le panneau
Marsh Posté le 08-04-2003 à 10:15:10
Code :
|
ca ne trie pas
EDIT : peu importe que j'ai
strItem2.CompareNoCase(strItem1);
ou
strItem1.CompareNoCase(strItem2);
Marsh Posté le 08-04-2003 à 10:51:22
Je viens de tester rapide avec le mm exemple que toi et ca marche.
Par contre je me demande un truc, tu as bien vu que la fonction de comparaison les 2 premiers parametres c est le DWORD associe a chaque item qu'il se voit passer en param et pas un index ou autre ?
Marsh Posté le 08-04-2003 à 10:55:34
bah je sais pourquoi ca va pas.
Code :
|
je vous rappele que ma listctrl est :
x 30000
y 40000
x 20000
voici la sortie pendant le "tri" :
icicompare
30000
30000
icicompare
30000
30000
Si il compare deux fois la premiere ligne avec elle meme, c'est normal que ca ne trie pas!
Est ce que quelqu'un a deja reussi a faire fonctionner la fonction SortItems????
Parce que c'est pour le moins bizarre
Marsh Posté le 08-04-2003 à 10:57:40
VisualC++ a écrit : Je viens de tester rapide avec le mm exemple que toi et ca marche. |
tu peux la refaire?
Marsh Posté le 08-04-2003 à 10:59:34
Code :
|
lParam1 et lParam2 sont les ItemData associe aux 2 elements a trier, et en aucune facon le numero de l'item.
Marsh Posté le 08-04-2003 à 11:03:22
VisualC++ a écrit :
|
Comment tu t'en servirais toi alors de ces deux parametres?
L'MSDN ne me dit rien pour ca.
Marsh Posté le 08-04-2003 à 11:11:43
Ben a toi de le remplir l'itemdata, et si y a marque ds la MSDN
Citation : |
Quand j'ai vu
Code :
|
dans ton code, je supposais que tu avais fait des SetItemData a l'init afin que le dword soit egale a l'indice de ton item.
Ben simplement pour l'utilisation
Code :
|
et tu fais SetItemData() avant chaque Sort pour remettre les ItemData correctement
C tout
Marsh Posté le 08-04-2003 à 11:28:10
Ca fonctionne avec le SetItemData
Je ne savais absolument pas qu'il fallait faire ca!
Un grand merci a toi
EDIT : Est ce que je pourrais ajouter un parametre a la fonction de comparaison qui me servirait a indiquer sur quelle colonne on trie?
Marsh Posté le 08-04-2003 à 11:31:38
Non tu peux pas elel est definie comme cela.
Si tu veux faire un truc plus sioux, faut passer :
- soit par une fonction de tri faite a la main
- soit dans le SetItemData() tu lui colle ttes les options afin de set le DWORD en fonction du param a trier.
Edit: j'entend par faite a la main de ne pas utiliser le SortItem.
Marsh Posté le 08-04-2003 à 09:29:16
J'essaye de trier une ListCtrl dans laquelle j'ai :
x 30000
y 40000
x 20000
pour la trier d'apres la deuxieme colonne je fais :
et ma liste n'est pas triee.
Mais si je mets
il m'inverse la liste
=> x 20000
y 40000
x 30000
Quelqu'un voit ou se situe le probleme?
http://msdn.microsoft.com/library/ [...] titems.asp
Message édité par polo021 le 08-04-2003 à 11:44:58