Newsgroup: it.comp.programmare.win32
Titolo: Aiuto con ListControl

Salve a tutti... ho un problemino con i ListCtrl in MFC: in pratica vorrei
ordinare gli elementi inseriti a seconda della colonna di cui si clicka
l'header; lo fa praticamente qualsiasi programma che usa questi controlli!
Ho provato ad usare la OnColumnlickList(), ma poi non so quale funzione
usare per ordinare gli elementi e soprattutto non ho0 idea di come passargli
il numero della colonna su cui si clicka.
Vi ringrazio per l'(eventuale) aiuto!!!
-------------------------------------------
     The Matrix has you
-------------------------------------------
             .:: Nero ::.
 
www.ilbaluardo.com
-------------------------------------------
    Follow the white rabbit
-------------------------------------------

 il numero della colonna su cui si clicka.
Purtroppo è una di quelle cose che sono molto più semplici a farsi che a
dirsi. In primo luogo, all'interno di OnColumnclick() devi chiamare il
metodo CListCtrl::SortItems(). Questo metodo accetta due parametri. Il primo
è il puntatore ad una funzione: tale funzione deve avere una firma del tipo
int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
I primi due parametri identificano due elementi del ListCtrl, l'ultimo
identifica come questi elementi devono essere ordinati (a scanso di
equivoci: tutta l'implementazione della funzione te la devi fare tu!).
Il secondo parametro di SortItems() indica come questi elementi devono
essere ordinati ed in pratica è lo stesso lParamSort che compare nella tua
funzione di confronto (in pratica SortItems non fa altro che chiamare
internamente la funzione di confronto per ogni coppia di elementi del
ListCtrl passando come lParamSort il valore da te specificato).
Per maggiori dettagli, ti consiglio di leggerti MSDN riguardo al metodo
SortItems().
 --
  Jerle Shannara
Per rispondere in email togli NO e SPAM
homepage 
http://utenti.tripod.it/jerleshannara

OK, ti ringrazio per  la risposta!
Solo una cosa: dove trovo la definizione di LPARAM e COLLBACK? Sono macro,
giusto? Conosco bene il c++, ma da quando sono passato dalla console dos
all'interfaccia di win mi ritrovo sempre con questi tipi di dato che non
conosco!!!


 conosco!!!
Se non sbaglio entrambi in WinDef.h: il primo č nient'altro che un long, il
secondo sta per __stdcall (o PASCAL che č lo stesso) e indica al compilatore
che deve passare i parametri ad una funzione nello stesso ordine in cui
compaiono nella sua firma (tipicamente i compilatori C passano i parametri
in ordine inverso).
Comunque, se fossi in te considererei l'acquisto di "Programmare Windows" di
Petzold.



Ho "Visual C++ Guida completa" di Davis Chapman (Apogeo), ma su queste cose
non spiega niente!
Cmq ho trovato una classe derivata dal list control base che implementa
tutte le funzioni di questo tipo (compresa la freccina che indica
l'ordinamento nell'intestazione della colonna!)... proverň a riscrivere il
programma con quella...
Anche perchč utilizzo il list control per accedere ad un database di access
con odbc e se per esempio tolgo l'ordinamento di default (cioč la prima
colonna in ordine alfabetico) va tutto a pu**ane! Probabilmente ho scritto
male qualche funzione, basandomi appunto su questo ordinamento automatico e
non tenendo conto di eventuali errorri con altri ordinamenti!
Per ora ti ringrazio, se avessi altri problemi posso contattarti nuovamente?
Ciao!
--


 Ciao!
Ciao :-)
