Page 1 of 1

CMFCShellTreeCtrl bug

Posted: 24 May 2010, 01:12
by ak_47
Trebuie sa trec recursiv printr-un tree.
CMFCShellTreeCtrl::GetChild returneaza NULL daca parintele nu este expandat.
am testat si pe vs 2010 si pe vs 2008. Ce sa fac?

Re: CMFCShellTreeCtrl bug

Posted: 24 May 2010, 12:04
by Viorel
Probabil acest control îşi încarcă datele abia în momentul expandării nodurilor. Încearcă să expandezi nodul părinte (cu funcţia Expand şi codul TVE_EXPAND) dacă nu e expandat deja. Apoi nodul poate fi închis. Asta nu ar trebui să genereze efecte vizuale nedorite.

Din surse mai rezultă şi că prin derivarea unei clase din CMFCShellTreeCtrl ai putea încerca apelul funcţiei nedocumentate GetChildItems.

Re: CMFCShellTreeCtrl bug

Posted: 24 May 2010, 19:20
by cristianamarie
Viorel wrote:Probabil acest control îşi încarcă datele abia în momentul expandării nodurilor. Încearcă să expandezi nodul părinte (cu funcţia Expand şi codul TVE_EXPAND) dacă nu e expandat deja. Apoi nodul poate fi închis. Asta nu ar trebui să genereze efecte vizuale nedorite.

Din surse mai rezultă şi că prin derivarea unei clase din CMFCShellTreeCtrl ai putea încerca apelul funcţiei nedocumentate GetChildItems.
Nu degeaba nu e expandat. Sa cheme Expand din cod poate avea efecte laterale (dialoage de confirmare etc.) sau sa stea enorm de mult.
Enumerarea se face asa cum e. No children, atunci e 0. Ori nu incarci din tree (care e doar o reprezentare vizuala) si obtii de la tree ce trebuie (IEnumXXX) si il interoghezi pe ala. La fel cum in Explorer poate nodul inca nu contine nimic pina nu dai click pe +, dar poti interoga sistemul de fisiere.

Re: CMFCShellTreeCtrl bug

Posted: 25 May 2010, 12:07
by ak_47
exact asta se intampla , dureaza enorm de mult.
Dau check la un folder din tree, in care trebuie sa-mi selecteze recursiv toti copiii lui.
Trebuie sa trec prin toti copii si subcopiii lui , sa le dau expand ca sa pot sa le dau check.
Are careva vreo solutie , sa -i obtin copiii fara sa-i dau expand ?

Re: CMFCShellTreeCtrl bug

Posted: 25 May 2010, 13:54
by Silviu Ardelean
Se pare ca problemele cu aceasta clasa sunt cunoscute si au fost rezolvate in VS 2010.
http://connect.microsoft.com/VisualStud ... s-too-slow
http://connect.microsoft.com/VisualStud ... lders-flag

Re: CMFCShellTreeCtrl bug

Posted: 25 May 2010, 14:20
by ak_47
nu stiu cum oare au fost rezolvate, ca am testat si pe un proiect facut in vs 2010 si am avut aceeasi problema.

Re: CMFCShellTreeCtrl bug

Posted: 25 May 2010, 14:21
by ak_47
Silviu Ardelean wrote:Se pare ca problemele cu aceasta clasa sunt cunoscute si au fost rezolvate in VS 2010.
http://connect.microsoft.com/VisualStud ... s-too-slow
http://connect.microsoft.com/VisualStud ... lders-flag
nu au fost rezolvate ,cel putin linkul 2

Re: CMFCShellTreeCtrl bug

Posted: 25 May 2010, 14:22
by Silviu Ardelean
Daca esti sigur, atunci adauga comentarii pe pagina de la link-ul respectiv.

Re: CMFCShellTreeCtrl bug

Posted: 25 May 2010, 14:38
by ak_47
Silviu Ardelean wrote:Daca esti sigur, atunci adauga comentarii pe pagina de la link-ul respectiv.
Asta o sa fac, mersi mult. :thumbsup:

Re: CMFCShellTreeCtrl bug

Posted: 26 May 2010, 00:32
by ak_47
se pare ca mi-am dat seama , ca problema asta apare decat la proiectele facute in vs 2008 (cu feature pack) , convertite la vs 2010. La cele create noi in vs2010 , nu aveam problema asta