JoebarGlut
Messages postés111Date d'inscriptionmercredi 13 août 2003StatutMembreDernière intervention17 octobre 2007
-
13 mars 2006 à 15:05
JoebarGlut
Messages postés111Date d'inscriptionmercredi 13 août 2003StatutMembreDernière intervention17 octobre 2007
-
14 mars 2006 à 01:11
Bonjour,
Voila j'ai un souçis avec une listebox, j'espere que quelqu'un pourra m'aider. Moi je n'ai plus d'idées et pourtant y'a rien de plus simple... quelque chose dois m'echapper.
Voila mon but :
J'ai un bouton AJOUTER, SUPPRIMER, UP et DOWN.
Je remplis ma listebox avec des objets Cmp3.
Le programme compile, il ne plante pas, je peux ajouter des mp3, je peux les supprimer. Jusque la tout va bien.
Mais lorsque je veux intervertir deux objets, je fais appel a la fonction UP pour intervertir vers le haut et DOWN vers le bas.
En debugant mes fonctions : mes objets s'intervertssent correctement.
Mais quand je fais appel à update(), ma listebox est censée se détruire et reafficher chaques objets Cmp3.
Lorsque je debug update, tout est normal.
ALORS POURQUOI L'AFFICHAGE NE SE FAIS PAS ? (alors que cette fonction fonctionne avec ajouter et supprimer)
Autre remarque :
Lorsque je fais un UP(), puis un suppr() du mp3 que je viens de monter, il me supprime le bon objet, mais pas le bon affichage puisque ma listebox n'a pas fait de UP().
J'espere que j'etais assez clair, y'a rien de compliqué et la je suis bloqué sur cette bizarerie incomprehensible :(
Voici un peu de code :
if(UPDATE) // mise a jour de la playliste (WINDOWS LOOP)
{
Cplaylist->update() ; UPDATE = 0 ; }
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 13 mars 2006 à 18:28
Salut,
Dans ta fonction update, la variable size doit etre une structure SIZE
(voir msdn sur le dernier param GetTextExtentPoint32). Donc vu que size
n'est pas un int les trucs du genre "size > maxLen" et "maxLen =
size" sont faux.
Au passage, petit memory leak puisque tu oublies de liberer le hDC que tu crée avec GetDC.
Sinon consernant la technique, je pense que supprimer tout les items et les rajouter dans le bon ordre c'est un peu lourd.
Pour faire tes fonctions up et down, il suffit juste d'enlever et de rajouter l'item au bon endroit non ?
JoebarGlut
Messages postés111Date d'inscriptionmercredi 13 août 2003StatutMembreDernière intervention17 octobre 2007 13 mars 2006 à 16:51
J'ai du nouveau.
apparament quand lors de l'update la chaine de caractere s'agrandie, j'envois le message suivant qui semble me faire buguer.
SendMessage(hList, LB_SETHORIZONTALEXTENT, size, 0);
A ce moment la, meme si i != nb_mp3, je sors quand meme du for !
Trop fort, lol jamais vu ca.
Il sors du for et il va directement à la ligne au dessus du for ici :
SendMessage(hList, LB_RESETCONTENT, NULL, NULL);
Ca voudrais dire qu'il relance la fonction update ?!
...tres bizare !
Peut etre une reference a une fonction update() dans la fonction sendmessage mais m'etonnerais... ou alors c dans les threads windows ke ca merdouille :(
Vous n’avez pas trouvé la réponse que vous recherchez ?
JoebarGlut
Messages postés111Date d'inscriptionmercredi 13 août 2003StatutMembreDernière intervention17 octobre 2007 13 mars 2006 à 17:16
Bon j'ai resolu ce dernier bug bizare en fesant le SETHORIZONTALEXTENT en dehors de la fonction update, mais mon probleme ne venais pas de ca...
mon break pas à pas fait tout ce que je veux, mes variables contiennent tout ce que je veux. Pas d'erreur renvoyées par les SendMessage... je suis au bord du suicide, j'aurais du poster dans Au secours
C'est la premiere fois que je bloque autant sur un truc qui devrais etre pourtant simple et qui l'etait jusqu'au codage de up() et donw() :S
Si je resouds pas ca, je ne touche plus a cette api et je m'en cree une entierement en glut lol. (s'il fo reinventer la roue...grrr)
JoebarGlut
Messages postés111Date d'inscriptionmercredi 13 août 2003StatutMembreDernière intervention17 octobre 2007 13 mars 2006 à 19:31
salut
Pour le size j'aurais bien aimé utiliser la struct SIZE mais mon compilo ne connais pas le type SIZE alors j'ai mis int et j'ai vu que ca marchais et les valeurs semblent correctes.
C'est dans quel point H ?
Ensuite pour GetDC, j'ai rajouté ReleaseDC(NULL, hdc); , c'est bien comme ca ? (premiere fois que je passe NULL a GetDC)
Sinon pour la technique en fait je m'occupe d'abord de ma liste d'objet mp3 et ensuite je gere son affichage donc le plus rapide pour moi ct un deletecontent puis une simple recopie de mon tableau d'objets mp3 mais je ferais comme tu dis si vraiment je n'arrive pas a resoudre ce probleme. Ce qui m'irisse c'est surtout que ca marche nikel pour ajout et suppr et ca m'embete d'utiliser une autre technique tant que je n'aurais pas compris pourquoi il me fais ça ce grrrrrrrrrrrrrrrrrrrrredin !
JoebarGlut
Messages postés111Date d'inscriptionmercredi 13 août 2003StatutMembreDernière intervention17 octobre 2007 14 mars 2006 à 01:11
Bon en fait j'ai utilisé ta technique et ca fonctionne nikel :)
J'aurais bien aimé savoir pour l'autre mais tans pis, je m'en vais avec une lacune qui viendra m'achever un autre jour...
merci pour l'aide ;)