PDA

Visualizza la versione completa : [C++] ProprietÓ per dati personalizzati in TreeView con MFC


giuseppe500
24-03-2007, 20:35
ciao.
Ho una treeview in c++ (mfc)
In c# usavo mettere oggetti personalizzati (mie classi con parametri e dati) nella proprietÓ .tag del nodo (treenode), in modo da recuperarli al cambiamento di un nodo , nell' after select ,facendo un cast e avendo a disposizione tutte le proprieta di quell'oggetto personalizzato.
In c non ci sono riuscito , infatti l'insertitem della treeview non accetta oggetti e non c'Ŕ neanche una proprieta tag.
ho notato che non esistono classi del tipo treenode , bensi' strutture,e non so se si possono ereditare(credo proprio di no)
un aiuto?

giuseppe500
26-03-2007, 14:13
up

giuseppe500
27-03-2007, 11:44
ho visto che si puo' utilizzare il setitemdata ma non ho capito come

MItaly
27-03-2007, 17:45
Passa un puntatore all'oggetto che vuoi associare al TreeItem come secondo parametro di SetItemData.


tuaClasse * tC = new tuaClasse();
//...
tuoTreeCtrl.SetItemData(handleItem, (DWORD) tuaClasse);
//...
(tuaClasse *)(tuoTreeCtrl.GetItemData(handleItem))->tuoMetodo();
//...
delete tC;

giuseppe500
27-03-2007, 18:09
quando lo distruggo l'oggetto?
grazie

MItaly
27-03-2007, 18:17
Quando non ti serve pi¨. In alternativa puoi dichiarare l'oggetto a livello di classe in modo che venga distrutto automaticamente quando viene distrutta la classe.


class tuaClasse : CDialog //o quello che Ŕ
{
//...
tuaClasse tuoOggetto();
//...
}

tuaClasse::tuoMetodo()
{
//...
tuoTreeCtrl.SetItemData(handleItem, (DWORD) &tuoOggetto);
//...
}

giuseppe500
11-04-2007, 17:34
grazie.
Ma come Ŕ piu' giusto in oop volendo popolare dei campi edit su un dialog con i contenuti del mio oggetto(a sua volta contenuto del nodo della ctree)?
Fare il cast sul getitemdata e poi chiamare un metodo che popola i campi edit?
o come?

giuseppe500
18-04-2007, 09:47
up

Loading