begin process at 2012 05 30 19:00:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

tri listview ( debug - release )


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

tri listview ( debug - release )

mardi 27 juillet 2004 à 14:54:32 | tri listview ( debug - release )

3psilon


Bonjour a tous,

J'explique mon probleme :

A titre pédagogique, j'ai crée une application (sans mfc avec VC 6), ou j'ai crée des listviews.

Je rempli les listviews de données directement sans les enregistrer dans des structures, je sais ce n'est pas une bonne méthode mais cette application à pour but de m'apprendre la prog win32.

J'ai alors implémenté le tri en utilisant la macro 'ListView_SortItems'.

En mode debug cela fonctionne tres bien sur toutes les colonnes.

Passant en release, je m'apercois que mon tri n'est correct que sur la premiere colonne.

Apres avoir regarder sur le net et sur ce forum, en autre la source de Vecchio56, je me rend compte d'une chose tres importante qui est le parametre LPARAM de la structure LVITEM qui a pour but, si j'ai bien compris, de pointer sur la donnée désirée.
Ce pointeur sera ensuite utilisé dans le cadre du tri orchestré par la macro.

Mes questions sont les suivantes :

- On est donc obligé, si l'on désire trier la listview, de sauvegarder toutes les données ds des structures adaptées ?

- Alors en debug le compilo se charge de créer les structures pour le tri ?

- Est-ce que j'ai bien compris ?








Merci pour votre aide

+++
mardi 27 juillet 2004 à 17:00:06 | Re : tri listview ( debug - release )

cosmobob

'Est-ce que j'ai bien compris ?' -> non :)
en debug le compilo ne cree pas de structures.
au moment ou tu inseres un item avec lvm_insertitem, tu remplis le champ lparam de l'item en question.
la fonction de comparaison utilisée qd tu fais un sortitem va prendre en parametres les lparam des items qu'elle est en train d'ordonner.
le lparam peut correspondre a un pointeur, un entier, ce que tu veux... c'est ta fonction de comparaison qui va l'utiliser.
si tu ne veux pas sauvegarder les donnees ds des structures, utilises lvm_sortitemsex. les lparam qui seront passés dans ta fonction de comparaison seront alors les index des items ds la liste view (et tu peux alors tout avoir en faisant des getitem...)
va voir la : msdn LVM_SORTITEMSEX

la seule chose que fait la version debug, c'est inserer les infos de debogage ds l'exe (pour pouvoir suivre son execution pas a pas)

si ca marche en debug et pas en release, c'est du a une mauvaise utilisation de la mémoire... ca ne fait pas les memes effets car en debug ya des infos de debogage un peu partout.

voila, si ca a pu t'eclairer...
a+ ;)
mardi 27 juillet 2004 à 17:03:03 | Re : tri listview ( debug - release )

cosmobob

bon le lien est mauvais;)
c'est lui le bon : msdn LVM_SORTITEMSEX
mardi 27 juillet 2004 à 17:06:32 | Re : tri listview ( debug - release )

cosmobob

tiens j'ai une question.
l'exe que t'avais mis sans source, et qui a été retiré, il était de qui ? vu que tu dis que t'es en train d'apprendre comment tout ca marche, donc c'est pas toi qui l'avais fait.
t'avais chopé la source, et la tu le refais toi meme pour piger, ou ... ?
mardi 27 juillet 2004 à 18:25:06 | Re : tri listview ( debug - release )

3psilon


Decidement c toi qui m'aide a chaque fois ;)

Merci pour l'info, je vais tester avec LVM_SORTITEMSEX.

Si tu veux voir la difference sur le tri des listviews , entre le debug et la release, j'ai fais la source suivante :

http://www.cppfrance.com/code.aspx?id=24766

Justement cette source fais partie de mon soft qui lui est un peu plus gros.
Et si si, ce soft est entierement de moi, je travaille dessus depuis qq temps, et en fait des que j'apprends un nouveau truc qui peut lui servir alors je l'implemente.

Mais en fait, je débute avec VC 6 depuis qq temps, et mon erreur a été de travailler au fil des versions que en mode debug, et maintenant je me retrouve avec des erreurs en release.
Bon les plus grosses erreurs sont corrigées, ben en fait il ne reste plus que le tri des listviews à corriger.





Merci encore

+++








Bye

3psilon
mardi 27 juillet 2004 à 18:30:14 | Re : tri listview ( debug - release )

cosmobob

ben alors tu peux ss doute répondre a ma question!
comment on fait pr changer individuellement la couleur d'une ligne donnée d'une listview ?
jme demande
a+ ;)
mardi 27 juillet 2004 à 18:46:33 | Re : tri listview ( debug - release )

3psilon


Il faut sous classer l'affichage des items de la listview.

Dans le NOTIFY, tu spécifies :

....
case IDC_LIST:
{
LPNMLISTVIEW pnm;
pnm = (LPNMLISTVIEW)lParam;

if(((LPNMHDR)lParam)->code == NM_CUSTOMDRAW)
{
SetWindowLong(hDlg, DWL_MSGRESULT,(LONG)ProcessCustomDrawNet(lParam));
return TRUE;
}
....


Ou ProcessCustomDrawNet sera ta fonction qui affichera les items.
Dans mon exemple, suivant le texte contenu d'un des subitems la couleur du texte sera differente.




LRESULT ProcessCustomDrawNet (LPARAM lParam)
{
LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)lParam;
switch(lplvcd->nmcd.dwDrawStage)
{
case CDDS_PREPAINT :
{ // Avant le commencement du cycle d'affichage
// Notification pour chaque item de la liste
return CDRF_NOTIFYITEMDRAW;
}

case CDDS_ITEMPREPAINT: // Avant Affichage de l'item Parametrage de la couleur du texte de l'item
{

char szTemp[96];
LVITEM LvItem;
LvItem.iSubItem = 5;
LvItem.pszText = szTemp;
LvItem.cchTextMax = 96;

SendMessage(hList,LVM_GETITEMTEXT, lplvcd->nmcd.dwItemSpec,(LPARAM)&LvItem); // recupère le texte


if (strcmp(szTemp,"CLOSE_WAIT")==0){
lplvcd->clrText = RGB(255,0,0);
return CDRF_NOTIFYITEMDRAW;
}
if (strcmp(szTemp,"TIME_WAIT")==0){
lplvcd->clrText = RGB(255,0,0);
return CDRF_NOTIFYITEMDRAW;
}
if (strcmp(szTemp,"FIN_WAIT1")==0){
lplvcd->clrText = RGB(255,0,0);
return CDRF_NOTIFYITEMDRAW;
}
if (strcmp(szTemp,"FIN_WAIT2")==0){
lplvcd->clrText = RGB(255,0,0);
return CDRF_NOTIFYITEMDRAW;
}
if (strcmp(szTemp,"CLOSING")==0){
lplvcd->clrText = RGB(255,0,0);
return CDRF_NOTIFYITEMDRAW;
}
if (strcmp(szTemp,"ESTABLISHED")==0){
lplvcd->clrText = RGB(20,150,0);
return CDRF_NOTIFYITEMDRAW;
}
if (strcmp(szTemp,"LISTENING")==0){
lplvcd->clrText = RGB(80,80,250);
return CDRF_NOTIFYITEMDRAW;
}

lplvcd->clrText = coltx;

break;
}

}
return CDRF_DODEFAULT;

}





Dans ce bout de code, j'affiche les connexions réseaux en cours et suivant l'état de la connexion la couleur du texte variera.





+++



mardi 27 juillet 2004 à 18:50:18 | Re : tri listview ( debug - release )

cosmobob

ok merci bcp bcp, jvais essayer ca !
j'ai trouvé ton msn ds le exe du premier Inxppect.exe, ca te gene si jtajoute ds mes contacts?
a+ ;)
mardi 27 juillet 2004 à 18:57:46 | Re : tri listview ( debug - release )

JCDjcd

En debug le compilo fait des operations en plus, comme par exemple remplir les mallocs de 0xfd, ect ...
Donc si ton programme se comporte differemment selon debug/release, il faut regarder du cote des operation sippementaires. Moi aussi ca m'ai arrivé se genre de desagrement pour les bitmaps, et il est vrai que c'est vraiment embetant, surtout quand on a l'habitude comme moi de travailler toujours en debug ....
mardi 27 juillet 2004 à 19:04:45 | Re : tri listview ( debug - release )

3psilon

ok cosmobob ;)


En passant, si qq1 a un lien qui explique ce que fais concretement VC
quand il passe du debug a release cela m'interesse :) genre comme tu dis JCDjcd , remplir les malloc .. etc .. etc



Merci

1 2

Cette discussion est classée dans : listview, tri, debug, release, structures


Répondre à ce message

Sujets en rapport avec ce message

debug vs release [ par coockiesch ] Hello!J'aimerais savoir les différences entre la compilation release et la compilation debug...Quels sont leurs avantages et leurs inconvéniants.Merci Debug & Release [ par hilairenicolas ] Bonjour à tous,j'ai un probleme étrange. Je developpe un .ocx qui n'a pas le meme comportement quand je le compile en mode debug ou en mode release. E assertion failed! + debug VS release [ par sro ] Bonjour,j'ai un ptit prgme cree a partir d'un "devolpement toolkit" pour webcam logitech. J'ai deja fait marche ce programme sans pb, mais maintenant Debug - Release - Probleme à l'execution... [ par Matt67 ] Bonsoir,Voici un morceau de code qui recupere le chemin de l'application et change l'extention en .ini (Dites moi si mon code est bien 'codé')LPTSTR l new - debug / release [ par magic_Nono ] PB du new.... alors que ça passe avec des alloc classiquesOn me conceil d'utiliser des new plutot que des malloc en C++très bien maisvoici un petit mo run debug != run release [ par Galmiza ] Salut,mon programme ne tourne pas de la meme facon quand je le compile en release ou en debug. C'est une sorte de moteur 3D, la difference est visible mode debug / mode release avec Visual C++ [ par franckydeluka ] Bonjour à tous,je viens de créer une dll en mode débug et quand je l'appelle à partir d'un autre programme ça marche nickel sans problème.ensuite je l Visual C++ 6.0: générer une version de debug/release [ par oh81 ] Bonjour,  J'ai installé visual C++ sur mon Pc depuis ... J'ai remarqué que  quand je remplace "win32 debug" par "win32 release" ou l'inverse dans "Pro comment faire un #if "debug/release mode" [ par nord666 ] Salut à tous et à toutes,Je me demande si c'est possible de pouvoir faire quelque chose du genre(j'utilise visual studio 8.0):#if (le mode dans lequel PB Release/debug [ par magic_Nono ] BjJe viens de constater un grave problème ds un soft que je viens de terminer (VC6)en version debug, nickel tt OKen version release, un évenement fait


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,527 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales