2010-04-09 3 views

risposta

12

ridimensionamento automatico delle colonne è facile:

for(int i = 0;i < pListCtrl->GetHeaderCtrl()->GetItemCount();++i) 
    pListCtrl->SetColumnWidth(i,LVSCW_AUTOSIZE_USEHEADER); 

Ciò consente di ottimizzare le colonne.

+0

Ehi, l'ho provato e sembra funzionare bene :) :) Grazie mille per la risposta dwo: D – Isuru

+0

Una piccola domanda dwo, non ho mai sentito parlare di HeaderControl. Che cosa è esattamente ??? Grazie mille !!! – Isuru

+0

Il controllo dell'intestazione è la parte superiore del controllo dell'elenco con i titoli delle colonne al suo interno. – dwo

1

È attiva l'opzione "No Scroll"? Per impostazione predefinita (opzione "No Scroll" disattivata), se un elemento è troppo lungo appare una barra di scorrimento.

1

Suppongo che intenda un controllo di elenco in modalità di report? Sfortunatamente non c'è modo di ridimensionare automaticamente le colonne. Quello che puoi fare (quello che faccio in alcuni punti) è calcolare la larghezza delle colonne mentre inserisci elementi, quindi gestire WM_SIZE e ridimensionare le colonne. Tuttavia questo causa modifiche che l'utente ha fatto perdersi, quindi potrebbe essere necessario un algoritmo migliore come il monitoraggio se l'utente ha apportato delle modifiche, se non l'ha ridimensionato. Non è molto bello da una prospettiva UX, lo uso solo in una quantità selezionata di circostanze in cui il comportamento ha senso nel contesto dell'intera interfaccia utente.

+0

Sì, è esattamente ciò che intendevo. Grazie per la risposta, se non riesco ad ottenere un algo adatto, gestirò semplicemente OnSize() per ridimensionare manualmente e chiedere al lettore di ridimensionare la finestra. – Isuru