CMFCShellTreeCtrl bug

Intrebari legate de programarea cu biblioteci precum MFC, ATL, WTL si GDI+.
Post Reply
ak_47
Junior
Junior
Posts: 6
Joined: 24 May 2010, 01:02

CMFCShellTreeCtrl bug

Post by ak_47 » 24 May 2010, 01:12

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?



Viorel
Microsoft MVP
Microsoft MVP
Posts: 293
Joined: 13 Jul 2007, 12:26

Re: CMFCShellTreeCtrl bug

Post by Viorel » 24 May 2010, 12:04

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.

User avatar
cristianamarie
Membru++
Membru++
Posts: 480
Joined: 12 Mar 2009, 18:47
Judet: Iaşi
Location: Iasi

Re: CMFCShellTreeCtrl bug

Post by cristianamarie » 24 May 2010, 19:20

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.
Nuclear launch detected

ak_47
Junior
Junior
Posts: 6
Joined: 24 May 2010, 01:02

Re: CMFCShellTreeCtrl bug

Post by ak_47 » 25 May 2010, 12:07

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 ?

User avatar
Silviu Ardelean
Senior
Senior
Posts: 1175
Joined: 12 Jul 2007, 09:22
Judet: Timiş
Location: Timisoara
Contact:

Re: CMFCShellTreeCtrl bug

Post by Silviu Ardelean » 25 May 2010, 13:54

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

ak_47
Junior
Junior
Posts: 6
Joined: 24 May 2010, 01:02

Re: CMFCShellTreeCtrl bug

Post by ak_47 » 25 May 2010, 14:20

nu stiu cum oare au fost rezolvate, ca am testat si pe un proiect facut in vs 2010 si am avut aceeasi problema.

ak_47
Junior
Junior
Posts: 6
Joined: 24 May 2010, 01:02

Re: CMFCShellTreeCtrl bug

Post by ak_47 » 25 May 2010, 14:21

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

User avatar
Silviu Ardelean
Senior
Senior
Posts: 1175
Joined: 12 Jul 2007, 09:22
Judet: Timiş
Location: Timisoara
Contact:

Re: CMFCShellTreeCtrl bug

Post by Silviu Ardelean » 25 May 2010, 14:22

Daca esti sigur, atunci adauga comentarii pe pagina de la link-ul respectiv.

ak_47
Junior
Junior
Posts: 6
Joined: 24 May 2010, 01:02

Re: CMFCShellTreeCtrl bug

Post by ak_47 » 25 May 2010, 14:38

Silviu Ardelean wrote:Daca esti sigur, atunci adauga comentarii pe pagina de la link-ul respectiv.
Asta o sa fac, mersi mult. :thumbsup:

ak_47
Junior
Junior
Posts: 6
Joined: 24 May 2010, 01:02

Re: CMFCShellTreeCtrl bug

Post by ak_47 » 26 May 2010, 00:32

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

Post Reply