Classe CCheckListBox
Fornisce la funzionalità di una casella elenco di controllo di Windows.
Sintassi
class CCheckListBox : public CListBox
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CCheckListBox::CCheckListBox |
Costruisce un oggetto CCheckListBox . |
Metodi pubblici
Nome | Descrizione |
---|---|
CCheckListBox::Create |
Crea la casella di controllo di Windows e la collega all'oggetto CCheckListBox . |
CCheckListBox::DrawItem |
Chiamato dal framework quando viene modificato un aspetto visivo di una casella di riepilogo di disegno proprietario. |
CCheckListBox::Enable |
Abilita o disabilita un elemento della casella di controllo. |
CCheckListBox::GetCheck |
Ottiene lo stato della casella di controllo di un elemento. |
CCheckListBox::GetCheckStyle |
Ottiene lo stile delle caselle di controllo del controllo. |
CCheckListBox::IsEnabled |
Determina se un elemento è abilitato. |
CCheckListBox::MeasureItem |
Chiamato dal framework quando viene creata una casella di riepilogo con uno stile di disegno proprietario. |
CCheckListBox::OnGetCheckPosition |
Chiamato dal framework per ottenere la posizione della casella di controllo di un elemento. |
CCheckListBox::SetCheck |
Imposta lo stato della casella di controllo di un elemento. |
CCheckListBox::SetCheckStyle |
Imposta lo stile delle caselle di controllo del controllo. |
Osservazioni:
Una "casella di controllo" visualizza un elenco di elementi, ad esempio i nomi file. Accanto a ogni elemento dell'elenco è presente una casella di controllo che l'utente può selezionare o deselezionare.
CCheckListBox
è solo per i controlli disegnati dal proprietario perché l'elenco contiene più di stringhe di testo. Nella sua casella di controllo più semplice, una casella di controllo contiene stringhe di testo e caselle di controllo, ma non è necessario che il testo sia affatto. Ad esempio, è possibile avere un elenco di piccole bitmap con una casella di controllo accanto a ogni elemento.
Per creare una casella di controllo personalizzata, è necessario derivare la propria classe da CCheckListBox
. Per derivare la propria classe, scrivere un costruttore per la classe derivata, quindi chiamare Create
.
Se si desidera gestire i messaggi di notifica di Windows inviati da una casella di riepilogo al relativo padre (in genere una classe derivata da CDialog
), aggiungere una voce della mappa messaggi e una funzione membro del gestore messaggi alla classe padre per ogni messaggio.
Ogni voce della mappa messaggi ha il formato seguente:
ON_Notification ( id
, memberFxn
)
dove id
specifica l'ID finestra figlio del controllo che invia la notifica e memberFxn
è il nome della funzione membro padre scritta per gestire la notifica.
Il prototipo della funzione padre è il seguente:
afx_msg void memberFxn();
Esiste una sola voce della mappa messaggi che riguarda in modo CCheckListBox
specifico (ma vedere anche le voci della mappa dei messaggi per CListBox
):
ON_CLBN_CHKCHANGE
L'utente ha modificato lo stato della casella di controllo di un elemento.
Se la casella di controllo è una casella di controllo predefinita (un elenco di stringhe con le caselle di controllo predefinite a sinistra di ognuna), è possibile utilizzare l'impostazione predefinita CCheckListBox::DrawItem
per disegnare la casella di controllo. In caso contrario, è necessario eseguire l'override della CListBox::CompareItem
funzione e delle CCheckListBox::DrawItem
funzioni e CCheckListBox::MeasureItem
.
È possibile creare una casella di controllo da un modello di finestra di dialogo o direttamente nel codice.
Gerarchia di ereditarietà
CCheckListBox
Requisiti
Intestazione: afxwin.h
CCheckListBox::CCheckListBox
Costruisce un oggetto CCheckListBox
.
CCheckListBox();
Osservazioni:
Si costruisce un CCheckListBox
oggetto in due passaggi. Definire prima una classe derivata da CCheckListBox
, quindi chiamare Create
, che inizializza la casella di controllo di Windows e la associa all'oggetto CCheckListBox
.
Esempio
CCheckListBox myCheckListBox;
myCheckListBox.Create(LBS_HASSTRINGS | LBS_OWNERDRAWFIXED,
CRect(10, 10, 100, 100), this, IDC_MYCHECKLISTBOX);
CCheckListBox::Create
Crea la casella di controllo di Windows e la collega all'oggetto CCheckListBox
.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parametri
dwStyle
Specifica lo stile della casella di controllo. Lo stile deve essere LBS_HASSTRINGS
e LBS_OWNERDRAWFIXED
(tutti gli elementi dell'elenco sono la stessa altezza) o LBS_OWNERDRAWVARIABLE
(gli elementi nell'elenco sono di altezza variabile). Questo stile può essere combinato con altri stili della casella di riepilogo ad eccezione LBS_USETABSTOPS
di .
rect
Specifica le dimensioni e la posizione della casella di controllo. Può essere un CRect
oggetto o una RECT
struttura.
pParentWnd
Specifica la finestra padre della casella di controllo (in genere un CDialog
oggetto). Non deve essere NULL.
nID
Specifica l'ID di controllo della casella di controllo.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
Si costruisce un CCheckListBox
oggetto in due passaggi. Prima di tutto, definire una classe derivata da CcheckListBox
e quindi chiamare Create
, che inizializza la casella di controllo di Windows e la associa a CCheckListBox
. Vedere CCheckListBox::CCheckListBox
per un esempio.
Quando Create
viene eseguito, Windows invia i WM_NCCREATE
messaggi , WM_CREATE
, WM_NCCALCSIZE
e WM_GETMINMAXINFO
al controllo casella di controllo.
Questi messaggi vengono gestiti per impostazione predefinita dalle OnNcCreate
funzioni membro , OnCreate
OnNcCalcSize
, e OnGetMinMaxInfo
nella CWnd
classe base. Per estendere la gestione predefinita dei messaggi, aggiungere una mappa messaggi alla classe derivata ed eseguire l'override delle funzioni membro del gestore messaggi precedenti. Eseguire l'override OnCreate
, ad esempio, per eseguire l'inizializzazione necessaria per una nuova classe.
Applicare gli stili di finestra seguenti a un controllo casella di controllo:
WS_CHILD
SempreWS_VISIBLE
SolitamenteWS_DISABLED
RaramenteWS_VSCROLL
Per aggiungere una barra di scorrimento verticaleWS_HSCROLL
Per aggiungere una barra di scorrimento orizzontaleWS_GROUP
Per raggruppare i controlliWS_TABSTOP
Per consentire la tabulazione a questo controllo
CCheckListBox::DrawItem
Chiamato dal framework quando cambia un aspetto visivo di una casella di controllo disegnata dal proprietario.
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
Parametri
lpDrawItemStruct
Puntatore lungo a una DRAWITEMSTRUCT
struttura che contiene informazioni sul tipo di disegno richiesto.
Osservazioni:
I itemAction
membri e itemState
della DRAWITEMSTRUCT
struttura definiscono l'azione di disegno da eseguire.
Per impostazione predefinita, questa funzione disegna un elenco di caselle di controllo predefinito, costituito da un elenco di stringhe ognuna con una casella di controllo di dimensioni predefinite a sinistra. La dimensione dell'elenco delle caselle di controllo è quella specificata in Create
.
Eseguire l'override di questa funzione membro per implementare il disegno di caselle di controllo di disegno proprietario che non sono quelle predefinite, ad esempio caselle di controllo con elenchi che non sono stringhe, con elementi a altezza variabile o con caselle di controllo che non si trova a sinistra. L'applicazione deve ripristinare tutti gli oggetti GDI (Graphics Device Interface) selezionati per il contesto di visualizzazione fornito in lpDrawItemStruct
prima della terminazione di questa funzione membro.
Se gli elementi della casella di controllo non sono tutte uguali, lo stile della casella di controllo (specificato in Create
) deve essere LBS_OWNERVARIABLE
e è necessario eseguire l'override della MeasureItem
funzione.
CCheckListBox::Enable
Chiamare questa funzione per abilitare o disabilitare un elemento della casella di controllo.
void Enable(
int nIndex,
BOOL bEnabled = TRUE);
Parametri
nIndex
Indice dell'elemento della casella di controllo da abilitare.
bEnabled
Specifica se l'elemento è abilitato o disabilitato.
CCheckListBox::GetCheck
Recupera lo stato della casella di controllo specificata.
int GetCheck(int nIndex);
Parametri
nIndex
Indice in base zero di una casella di controllo contenuta nella casella di riepilogo.
Valore restituito
Stato della casella di controllo specificata. Nella tabella seguente sono elencati i valori possibili.
valore | Descrizione |
---|---|
BST_CHECKED |
La casella di controllo è selezionata. |
BST_UNCHECKED |
La casella di controllo non è selezionata. |
BST_INDETERMINATE |
Lo stato della casella di controllo è indeterminato. |
CCheckListBox::GetCheckStyle
Chiamare questa funzione per ottenere lo stile della casella di controllo.
UINT GetCheckStyle();
Valore restituito
Stile delle caselle di controllo del controllo.
Osservazioni:
Per informazioni sui possibili stili, vedere SetCheckStyle
.
CCheckListBox::IsEnabled
Chiamare questa funzione per determinare se un elemento è abilitato.
BOOL IsEnabled(int nIndex);
Parametri
nIndex
Indice dell'elemento.
Valore restituito
Diverso da zero se l'elemento è abilitato; in caso contrario, 0.
CCheckListBox::MeasureItem
Chiamato dal framework quando viene creata una casella di controllo con uno stile non predefinito.
virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
Parametri
lpMeasureItemStruct
Puntatore lungo a una MEASUREITEMSTRUCT
struttura.
Osservazioni:
Per impostazione predefinita, questa funzione membro non esegue alcuna operazione. Eseguire l'override di questa funzione membro e compilare la MEASUREITEMSTRUCT
struttura per informare Windows delle dimensioni degli elementi della casella di controllo. Se la casella di controllo viene creata con lo LBS_OWNERDRAWVARIABLE
stile , il framework chiama questa funzione membro per ogni elemento nella casella di riepilogo. In caso contrario, questo membro viene chiamato una sola volta.
CCheckListBox::OnGetCheckPosition
Il framework chiama questa funzione per ottenere la posizione e le dimensioni della casella di controllo in un elemento.
virtual CRect OnGetCheckPosition(
CRect rectItem,
CRect rectCheckBox);
Parametri
rectItem
Posizione e dimensioni dell'elemento di elenco.
rectCheckBox
Posizione e dimensioni predefinite della casella di controllo di un elemento.
Valore restituito
Posizione e dimensioni della casella di controllo di un elemento.
Osservazioni:
L'implementazione predefinita restituisce solo la posizione e le dimensioni predefinite della casella di controllo (rectCheckBox
). Per impostazione predefinita, una casella di controllo è allineata nell'angolo superiore sinistro di un elemento ed è la dimensione della casella di controllo standard. Possono verificarsi casi in cui si desidera che le caselle di controllo a destra o si desideri una casella di controllo più grande o più piccola. In questi casi, eseguire l'override OnGetCheckPosition
per modificare la posizione e le dimensioni della casella di controllo all'interno dell'elemento.
CCheckListBox::SetCheck
Imposta lo stato della casella di controllo specificata.
void SetCheck(
int nIndex,
int nCheck);
Parametri
nIndex
Indice in base zero di una casella di controllo contenuta nella casella di riepilogo.
nCheck
Stato del pulsante per la casella di controllo specificata. Per i valori possibili, vedere la sezione Osservazioni.
Osservazioni:
Nella tabella seguente sono elencati i valori possibili per il nCheck
parametro .
valore | Descrizione |
---|---|
BST_CHECKED |
Selezionare la casella di controllo specificata. |
BST_UNCHECKED |
Deselezionare la casella di controllo specificata. |
BST_INDETERMINATE |
Impostare lo stato della casella di controllo specificato su indeterminato. Questo stato è disponibile solo se lo stile della casella di controllo è BS_AUTO3STATE o BS_3STATE . Per altre informazioni, vedere Stili pulsante. |
CCheckListBox::SetCheckStyle
Chiamare questa funzione per impostare lo stile delle caselle di controllo nella casella di controllo.
void SetCheckStyle(UINT nStyle);
Parametri
nStyle
Determina lo stile delle caselle di controllo nella casella di controllo.
Osservazioni:
Gli stili validi sono:
BS_CHECKBOX
BS_AUTOCHECKBOX
BS_AUTO3STATE
BS_3STATE
Per informazioni su questi stili, vedere Stili pulsante.