PB sortitems()

Résolu
titi4659 Messages postés 42 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 30 mars 2007 - 21 mars 2007 à 12:15
titi4659 Messages postés 42 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 30 mars 2007 - 21 mars 2007 à 14:47
Bonjour,

J'ai une liste d'element de type CListCtrl je souhaite la trié selon la colonne:
Pour cela j'utilise la fonction SortItems(mysort, num_colonne), jusque la rien de compliqué

lorsque je lance le rpogramme et que je clique sur la colonne a trié il réagi bien mais ne fait le tri que sur le premier et le dernier chiffre .
Coment résoudre cela??

Exemple

toto    7
titi      9
tata    4

une fois le tri effectuer il va me mettre :

tata 4
titi   9
toto 7

A l'avance merci

10 réponses

KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
21 mars 2007 à 13:03
Salut, encore des pb de tri ?
C quoi ta callback que tu passes a SortItems ?

Je te poste l'exemple de la MSDN :
// Sort the item in reverse alphabetical order.
static int CALLBACK
MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
   // lParamSort contains a pointer to the list view control.
   CListCtrl* pListCtrl = (CListCtrl*) lParamSort;
   CString    strItem1 = pListCtrl->GetItemText(lParam1, 0);
   CString    strItem2 = pListCtrl->GetItemText(lParam2, 0);

   return strcmp(strItem2, strItem1);
}

void snip_CListCtrl_SortItems()
{
   // The pointer to my list view control.
   extern CListCtrl* pmyListCtrl;

   // Sort the list view items using my callback procedure.
   pmyListCtrl->SortItems(MyCompareProc, (LPARAM) pmyListCtrl);
}

:D
3
titi4659 Messages postés 42 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 30 mars 2007
21 mars 2007 à 13:25
ma callback et tt simpe comparaison de 2 entiers :
[mailto:titi4659@free.fr in]t CALLBACK MySort(LPARAM param1,LPARAM param2,LPARAM paramsort)
{
if(param1SortItems(Mysort , numcolonne);



J'ai bien analyser le truc en faite il m'inverse ma liste .ALors que je voudrai qu'il la tri

Merci
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
21 mars 2007 à 13:32
Je n'ai jamais utilisé cette fonction mais il me semble que tu t'en sers mal. Regarde l'exemple de la MSDN que je t'ai posté.

:D
0
titi4659 Messages postés 42 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 30 mars 2007
21 mars 2007 à 13:39
cet exemple ne marche pas aussi, j'ai regardé sur divers forum est personne n'arrive a faire fonctionner cette fonction.


 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
21 mars 2007 à 14:00
Ah ben ce doit etre a cause de çà :

MSDN a propos de la callback :
The lParam1 parameter is the 32-bit value associated with the first
item being compared, and the lParam2 parameter is the value associated
with the second item. These are the values that were specified in the
lParam member of the items' <mshelp:link tabindex= "0" keywords="_win32_LVITEM">LVITEM</mshelp:link> structure when they were inserted
into the list. The lParamSort parameter is the same as the dwData
value.

Quand tu insères tes éléments dans ta liste, initialise le champ lParam de la struct LVITEM<link href ="../../../css/ie4.css" type="text/css" rel="stylesheet" /><!-- @ --><link href="../../../css/inetsdk.css" type="text/css" rel="stylesheet" /><!-- @ --><style type="text/css"><![CDATA[
PRE.clsCode { font-size:110%; }
PRE.clsSyntax { font-size:100%; }
TD DIV.clsBeta { display:none;}

A:link { color:#0000ff; text-decoration:underline;}
A:visited { color:#0000ff; text-decoration:underline;}
A:hover { color:#3366ff; text-decoration:underline;}
MSHelp\:link {
color:#0000ff;
text-decoration:underline;
cursor:hand;
hoverColor:#3366ff;
filterString: ;}
]]></style><link href="ms-help://Hx/HxRuntime/HxLink.css" type="text/css" rel="stylesheet" />

avec la valeur de ton code associé<xml id="_topicdata" pagetype="struct" proj="platsdk" name="LVITEM" pubpath="/platform/commctls/listview/structures/lvitem.htm"><!-- topic data --><root></root></xml>

<xml xmlns=""><mshelp:keyword index="A" term="_win32_LVITEM"></mshelp:keyword><mshelp:keyword index="A" term="_win32_LVITEM_cpp"></mshelp:keyword><mshelp:toctitle title="LVITEM Structure"></mshelp:toctitle><mshelp:rltitle title="LVITEM Structure ()"></mshelp:rltitle><mshelp:keyword index="F" term="LVITEM"></mshelp:keyword><mshelp:keyword index="K" term="LVITEM"></mshelp:keyword><mshelp:attr name="TopicType" value="kbRef"></mshelp:attr><mshelp:attr name="Locale" value="kbEnglish"></mshelp:attr><mshelp:attr name="DevLang" value="C++"></mshelp:attr><mshelp:attr name="Technology" value="Controls"></mshelp:attr><mshelp:attr name="TechnologyVers" value="kbControls"></mshelp:attr><mshelp:attr name="DocSet" value="WCSDK"></mshelp:attr><mshelp:attr name="DocSet" value="LHSDK"></mshelp:attr><mshelp:attr name="DocSet" value="PSDK"></mshelp:attr><mshelp:attr name="TargetOS" value="Windows"></mshelp:attr><mshelp:attr name="TopicType" value="apiref"></mshelp:attr><mshelp:attr name="APIName" value="LVITEM"></mshelp:attr><mshelp:attr name="APIType" value="COM"></mshelp:attr><mshelp:attr name="TopicType" value="kbSyntax"></mshelp:attr></xml>

:D
0
titi4659 Messages postés 42 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 30 mars 2007
21 mars 2007 à 14:09
C'est à dire? tu peux m'expliquer avec un bout de code stp.
je vois pas comment initialiser le champ lParam
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
21 mars 2007 à 14:17
<mshelp:link tabindex="0" keywords="_win32_LVITEM">utilise tu des LVITEM</mshelp:link> dans ton code ? si oui :

LVITEM item;
item.lParam = XXXX;

:D
0
titi4659 Messages postés 42 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 30 mars 2007
21 mars 2007 à 14:18
Non j'utilise pas de LVITEM dsl
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
21 mars 2007 à 14:26
Tu l'initialises comment ta liste ou comment insère tu tes éléments ?

:D
0
titi4659 Messages postés 42 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 30 mars 2007
21 mars 2007 à 14:47
l'affichage dans ma ListeCtrl, ce passe tres bien je peux faire tout ce que je veux tout fonctionne(suppression d'item , ...) donc elle est bien initialisé
et les element bien inséré.

ce que je ne comprends pas c'est pourquoi tout s'inverse au lieu de trié normalement.
0
Rejoignez-nous