PB sortitems()

[Résolu]
Signaler
Messages postés
42
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
30 mars 2007
-
Messages postés
42
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
30 mars 2007
-
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

Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
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
Messages postés
42
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
30 mars 2007

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
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
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
Messages postés
42
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
30 mars 2007

cet exemple ne marche pas aussi, j'ai regardé sur divers forum est personne n'arrive a faire fonctionner cette fonction.


 
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
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
Messages postés
42
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
30 mars 2007

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

LVITEM item;
item.lParam = XXXX;

:D
Messages postés
42
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
30 mars 2007

Non j'utilise pas de LVITEM dsl
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
Tu l'initialises comment ta liste ou comment insère tu tes éléments ?

:D
Messages postés
42
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
30 mars 2007

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.