Condividi tramite


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à

CObject

CCmdTarget

CWnd

CListBox

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_USETABSTOPSdi .

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_NCCREATEmessaggi , WM_CREATE, WM_NCCALCSIZEe WM_GETMINMAXINFO al controllo casella di controllo.

Questi messaggi vengono gestiti per impostazione predefinita dalle OnNcCreatefunzioni membro , OnCreateOnNcCalcSize, 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 Sempre

  • WS_VISIBLE Solitamente

  • WS_DISABLED Raramente

  • WS_VSCROLL Per aggiungere una barra di scorrimento verticale

  • WS_HSCROLL Per aggiungere una barra di scorrimento orizzontale

  • WS_GROUP Per raggruppare i controlli

  • WS_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_OWNERVARIABLEe è 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.

Vedi anche

Esempio MFC TSTCON
CListBox Classe
Grafico della gerarchia