|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Utente sospeso
Iscritto dal: Oct 2002
Messaggi: 2156
|
[MFC - visual c++] controllo CListCtrl non renderizzato (apparentemente)
sto uscendo pazzo a causa di un problema con il controllo lista (CListctrl) di mfc ( quanto odio questa libreria!!) in pratica, dragggo il controllo in una dialog, gli setto lo stile, poi provo a inserire un paio di colonne e un elemento....qui c'è il codice;
CRect rett; GetClientRect(&rett); this->m_point_list.Create(LVS_ALIGNLEFT,rett,this,IDC_LIST1); this->m_point_list.DeleteAllItems(); this->m_point_list.InsertColumn(0, _T("campo1"), LVCFMT_LEFT, 100); this->m_point_list.InsertColumn(1, _T("campo2"), LVCFMT_LEFT, 100); this->m_point_list.InsertItem(0,"ciao"); questo codice è nella OnInitDialog della classe della dialog incriminata. Il problema è che quando lancio il programma il controllo appare VUOTO senza nemmeno le intestazioni delle colonne...... il bello è che se faccio un'applicazione con l'appwizard e ripeto gli stessi passaggi piazzando il controllo nella dialog principale tutto funziona a meraviglia e non devo nemmeno chiamare la create e posso subito cominciare a riempire il controllo........i metodi di inserimento ritornano valori validi, sembra quindic he il problema sia esclusivamente di rendering...ho provato a chiamare tutti i metodi che renderizzano il controllo ma niente da fare.....ho anche provato a aggiungere OnDraw alla classe della dialog ma niente.... non so più che fare..... qualche consiglio?
__________________
sign editata dallo staff |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: May 2000
Messaggi: 1459
|
non so se può essere questo, ma nella create, nel primo parametro, mancano WS_CHILD e WS_VISIBLE, che sono 2 stili da inserire sempre (il primo) e quasi sempre (il secondo) quando crei un controllo a runtime.
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: May 2000
Messaggi: 1459
|
è come pensavo, ho provato il tuo codice e funziona inserendo WS_CHILD | WS_VISIBLE come stili aggiuntivi nel primo parametro.
Codice:
CRect rett; GetClientRect(&rett); this->m_point_list.Create(WS_CHID | WS_VISIBLE LVS_ALIGNLEFT | LVS_REPORT,rett,this,IDC_LIST1); this->m_point_list.DeleteAllItems(); this->m_point_list.InsertColumn(0, _T("campo1"), LVCFMT_LEFT, 100); this->m_point_list.InsertColumn(1, _T("campo2"), LVCFMT_LEFT, 100); this->m_point_list.InsertItem(0,"ciao"); ciao |
![]() |
![]() |
![]() |
#4 |
Utente sospeso
Iscritto dal: Oct 2002
Messaggi: 2156
|
grazie
![]() provo subito....
__________________
sign editata dallo staff |
![]() |
![]() |
![]() |
#5 |
Utente sospeso
Iscritto dal: Oct 2002
Messaggi: 2156
|
si in effetti ora appare.....se posso abusare ancora della tua cortesia vorrei chiederti un'altra cosa, alla create devo dare il rettangolo in cui voglio che appaia la lista, ma perchè devo farlo visto che il controllo è già stato posizionato nel modello della dialog? te lo chiedo perchè se faccio una getcllientrect la lista appare sull'intera dialog, mentre se faccio un
Crect rett; GetDlgitem(IDC_LIST)->GetWindowRect(&rett); e poi passo il rett alla Create la lista non appare sul controllo ( a meno che non ci sia qualche correzione da fare alle coordinate vista) ma leggermente sotto.
__________________
sign editata dallo staff |
![]() |
![]() |
![]() |
#6 |
Utente sospeso
Iscritto dal: Oct 2002
Messaggi: 2156
|
scusa ho scritto un stupidaggine, io sto creando a run time un controllo lista e non sto sfruttando il controllo che c'è già.....
il problema di fondo è questo; se creo una dialog con dentro un controllo lista preso dalla toolbox, e cerco di scriverci qualcosa dentro al contruttore della dialog, o alla oninitdialog, o alla precreatewindow, schianta l'applicazione; se invece inserisco un button e lo bindo con una funzione (sempre della stessa dialog che scrive dentro a questo benedetto controllo, tutto funziona: perchè succede questo???
__________________
sign editata dallo staff |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:38.