Télécharger le zip
beau boulotc propre c clairec++
oui bravo pour ce code. Il est vraiment bien fait. Je créé ma premiere IHM en ce moment et je me demandais, tu fais une étude importante avant de te lancer dans le code ?? Comment t'y prends tu pour mettre sur papier tout ce qui sera nécessaire au développement de ton interface ?? Pour ma part, j'ai pleins de variables globales dont j'aurais certainement pu me passé avec plus d'experience...
Je ne mets pas TOUT sur papier, je mets seulement les grandes etapes, càd ce dont j'ai besoin, apres pour savoir COMMENT le faire, il faut prendre un brouillon pour programmer ... et puis j'avance. D'ailleurs il est impossible de faire du code qui marche sans papier, et sans debugger.J'ai remarqué aussi qu'il fallait souvent traiter un cas général, plutot que le cas particulier que tu cherches a resoudre, car le plus souvent c'est plus simple a programmer, et surtout des fois tu n'as pas pensé a tout les choses, et tu vois que tu avais besoin de cette generalisation.Il faut aussi avoir le soucis de lisibilité du code, car il est plus facile a debugger, de plus il faut partager le boulot, quand tu cherches à faire une fonction qui est complexe, crées d'autres sous-fonctions qui font le boulot.Un dernier mot sur tes "variables globale", celles ne doivent etre utilisees qu'en dernier recours. S'il y a trop de variables globales, cela veut dire que le code est mal structuré. Les parametres des fonctions sont là pour (justement) résoudre ce probleme.
C'est sympa de répondre aussi vite !!La difficulté dans mon cas était que je ne connaissais pas l'API windows.. C'est pas évident de prévoir un programme sans connaitre sa structure !!De plus, je crois que j'ai eu l'impatience du débutant ! Ca sert a ca les projets, a comprendre ses erreurs et a tenté de ne plus les commettre !! Et merci encore pour ton code, c'est grace a ce genre de chose que l'on apprend le plus!!Je tente vainement d'utiliser les treeview moi-meme mais c'est un peu galere.. Et je n'en ai que deux !! J'ai d'ailleurs un probleme etrange a résoudre.. Crois tu que tu pourrais m'aider ? Si ca te derange, pas de soucis !!
Vas-y pour voir !(moi aussi j'ai les fois les yeux plus gros que le ventre)
Voila le code qui pose probleme :case WM_NOTIFY:TV_ITEM tv_item; TV_ITEM tv_itemvideo;if(lpnmh->hwndFrom == treeViewFlux) { switch (lpnmh->code) { case NM_CLICK : DWORD dwpos = GetMessagePos(); ht.pt.x = GET_X_LPARAM(dwpos); ht.pt.y = GET_Y_LPARAM(dwpos); MapWindowPoints(HWND_DESKTOP, lpnmh->hwndFrom, &ht.pt, 1); TreeView_HitTest(lpnmh->hwndFrom, &ht); tv_item.mask = TVIF_HANDLE | TVIF_STATE; tv_item.hItem = ht.hItem; tv_item.stateMask = TVIS_STATEIMAGEMASK; TreeView_GetItem(treeViewFlux, &tv_item); affichageListeVideos(tv_item.lParam - tv_item.lParam%100, treeViewVideo); if(TVHT_ONITEMSTATEICON & ht.flags) { PostMessage(hwnd, UM_CHECKSTATECHANGE, 0, (LPARAM)ht.hItem); } break; } } elseif(lpnmh->hwndFrom == treeViewVideo) { switch (lpnmh->code) { case NM_CLICK: tv_itemvideo.mask = TVIF_HANDLE | TVIF_TEXT; tv_itemvideo.hItem = htVideo.hItem; tv_itemvideo.stateMask = TVIS_STATEIMAGEMASK; TreeView_GetItem(treeViewVideo, &tv_itemvideo); printf("treeviewvideo lparam = %d\n", tv_itemvideo.lParam); SetCurrentDirectory(currentPath); break; } }Voila donc, j'ai deux treeview. la treeviewflux ne me pose pas de probleme. Lorsque je click dessus, je sais que j'ai le bon lParam de l'item clické.Le probleme vient de l'autre treeview. Si je click sur l'un de ses item, la valeur du lParam est du style -169987523. ce qui est loin d'etre la valeur attendue !!!je ne vois pas ou est le probleme...Voila comment j'insere l'element qui s'affiche dans la treeview incriminée : tviis.hInsertAfter = TVI_LAST; ZeroMemory(&(tviis.item), sizeof(TV_ITEM)); tviis.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM | TVIF_HANDLE | TVIF_STATE; tviis.item.stateMask = TVIS_STATEIMAGEMASK; tviis.hParent = TVI_ROOT; tviis.item.lParam = pCurrentVideo->id; tviis.item.pszText = pCurrentVideo->videoName; TreeView_InsertItem(treeView, &tviis);Merci du coup de main !!
Ce probleme est aussi a cette adress : http://www.developpez.net/forums/showthread.php?t=147436Personne, jusqu'a présent n'a reussi a me dire ce qui n'allait pas...Merci encore !
Tu vois quel est le probleme ??
tu fais elseif(lpnmh->hwndFrom == treeViewVideo){ switch (lpnmh->code) { case NM_CLICK: tv_itemvideo.mask = TVIF_HANDLE | TVIF_TEXT; // !!! ICI !!! tv_itemvideo.hItem = htVideo.hItem; tv_itemvideo.stateMask = TVIS_STATEIMAGEMASK; TreeView_GetItem(treeViewVideo, &tv_itemvideo); printf("treeviewvideo lparam = %d\n", tv_itemvideo.lParam); SetCurrentDirectory(currentPath); break; }}si tu veux recuperer lParam, alors il faut mettre le 'flag' TVIF_PARAM, enfin je crois que c'est ca le problemeLa je ne parle pas de l'ajout, mais de l'appel a Get_Item.
Désolé, le site buggait..J'ai essayé mais ca ne marche pas mieux... D'autant plus que pour l'autre treeview, je n'ai pas mis ce mask et ca marche sans problemes... je comprend vraimenet pas...
ouais mais il faut jouer avec le champ <stateMask> et non <mask>
rehello !!J'ai tout tenté, modifcation du mask, du statemask, rien y a fait... Je n'arrive pas a obtenir le lParam... Je comprends pas. On dirai qu'il ne pointe pas sur le bon HTREEITEM. Si tu as une autre idée, je susi preneur ! Mais ca m'inquiète si toi non plus ne trouve pas mon erreur !Merci en tout cas!
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 598 799 membres 65 nouveaux aujourd'hui 15 441 membres club