Classe CComboBox
Fornisce la funzionalità di una casella combinata di Windows.
Sintassi
class CComboBox : public CWnd
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CComboBox::CComboBox |
Costruisce un oggetto CComboBox . |
Metodi pubblici
Nome | Descrizione |
---|---|
CComboBox::AddString |
Aggiunge una stringa alla fine dell'elenco nella casella di riepilogo di una casella combinata o nella posizione ordinata per le caselle di riepilogo con lo CBS_SORT stile . |
CComboBox::Clear |
Elimina (cancella) la selezione corrente, se presente, nel controllo di modifica. |
CComboBox::CompareItem |
Chiamato dal framework per determinare la posizione relativa di un nuovo elemento di elenco in una casella combinata ordinata disegnata dal proprietario. |
CComboBox::Copy |
Copia la selezione corrente, se presente, negli Appunti in CF_TEXT formato . |
CComboBox::Create |
Crea la casella combinata e la associa all'oggetto CComboBox . |
CComboBox::Cut |
Elimina (taglia) la selezione corrente, se presente, nel controllo di modifica e copia il testo eliminato negli Appunti in CF_TEXT formato . |
CComboBox::DeleteItem |
Chiamato dal framework quando un elemento di elenco viene eliminato da una casella combinata disegnata dal proprietario. |
CComboBox::DeleteString |
Elimina una stringa dalla casella di riepilogo di una casella combinata. |
CComboBox::Dir |
Aggiunge un elenco di nomi di file alla casella di riepilogo di una casella combinata. |
CComboBox::DrawItem |
Chiamato dal framework quando cambia un aspetto visivo di una casella combinata disegnata dal proprietario. |
CComboBox::FindString |
Trova la prima stringa contenente il prefisso specificato nella casella di riepilogo di una casella combinata. |
CComboBox::FindStringExact |
Trova la prima stringa della casella di riepilogo (in una casella combinata) corrispondente alla stringa specificata. |
CComboBox::GetComboBoxInfo |
Recupera informazioni sull'oggetto CComboBox . |
CComboBox::GetCount |
Recupera il numero di elementi nella casella di riepilogo di una casella combinata. |
CComboBox::GetCueBanner |
Ottiene il testo del segnale visualizzato per un controllo casella combinata. |
CComboBox::GetCurSel |
Recupera l'indice dell'elemento attualmente selezionato, se presente, nella casella di riepilogo di una casella combinata. |
CComboBox::GetDroppedControlRect |
Recupera le coordinate dello schermo della casella di riepilogo visibile (eliminata) di una casella combinata a discesa. |
CComboBox::GetDroppedState |
Determina se la casella di riepilogo di una casella combinata a discesa è visibile (eliminata). |
CComboBox::GetDroppedWidth |
Recupera la larghezza minima consentita per la parte casella di riepilogo a discesa di una casella combinata. |
CComboBox::GetEditSel |
Ottiene le posizioni del carattere iniziale e finale della selezione corrente nel controllo di modifica di una casella combinata. |
CComboBox::GetExtendedUI |
Determina se una casella combinata ha l'interfaccia utente predefinita o l'interfaccia utente estesa. |
CComboBox::GetHorizontalExtent |
Restituisce la larghezza in pixel in cui è possibile scorrere orizzontalmente la parte casella di riepilogo della casella combinata. |
CComboBox::GetItemData |
Recupera il valore a 32 bit fornito dall'applicazione associato all'elemento casella combinata specificata. |
CComboBox::GetItemDataPtr |
Recupera il puntatore a 32 bit fornito dall'applicazione associato all'elemento casella combinata specificata. |
CComboBox::GetItemHeight |
Recupera l'altezza delle voci di elenco in una casella combinata. |
CComboBox::GetLBText |
Ottiene una stringa dalla casella di riepilogo di una casella combinata. |
CComboBox::GetLBTextLen |
Ottiene la lunghezza di una stringa nella casella di riepilogo di una casella combinata. |
CComboBox::GetLocale |
Recupera l'identificatore delle impostazioni locali per una casella combinata. |
CComboBox::GetMinVisible |
Ottiene il numero minimo di elementi visibili nell'elenco a discesa della casella combinata corrente. |
CComboBox::GetTopIndex |
Restituisce l'indice del primo elemento visibile nella parte casella di riepilogo della casella combinata. |
CComboBox::InitStorage |
Prealloca blocchi di memoria per elementi e stringhe nella parte casella di riepilogo della casella combinata. |
CComboBox::InsertString |
Inserisce una stringa nella casella di riepilogo di una casella combinata. |
CComboBox::LimitText |
Limita la lunghezza del testo che l'utente può immettere nel controllo di modifica di una casella combinata. |
CComboBox::MeasureItem |
Chiamato dal framework per determinare le dimensioni della casella combinata quando viene creata una casella combinata disegnata dal proprietario. |
CComboBox::Paste |
Inserisce i dati dagli Appunti nel controllo di modifica in corrispondenza della posizione corrente del cursore. I dati vengono inseriti solo se gli Appunti contengono dati in CF_TEXT formato . |
CComboBox::ResetContent |
Rimuove tutti gli elementi dalla casella di riepilogo e il controllo di modifica di una casella combinata. |
CComboBox::SelectString |
Cerca una stringa nella casella di riepilogo di una casella combinata e, se la stringa viene trovata, seleziona la stringa nella casella di riepilogo e copia la stringa nel controllo di modifica. |
CComboBox::SetCueBanner |
Imposta il testo del segnale visualizzato per un controllo casella combinata. |
CComboBox::SetCurSel |
Seleziona una stringa nella casella di riepilogo di una casella combinata. |
CComboBox::SetDroppedWidth |
Imposta la larghezza minima consentita per la parte casella di riepilogo a discesa di una casella combinata. |
CComboBox::SetEditSel |
Seleziona i caratteri nel controllo di modifica di una casella combinata. |
CComboBox::SetExtendedUI |
Seleziona l'interfaccia utente predefinita o l'interfaccia utente estesa per una casella combinata con lo CBS_DROPDOWN stile o CBS_DROPDOWNLIST . |
CComboBox::SetHorizontalExtent |
Imposta la larghezza in pixel in cui è possibile scorrere orizzontalmente la parte casella di riepilogo della casella combinata. |
CComboBox::SetItemData |
Imposta il valore a 32 bit associato all'elemento specificato in una casella combinata. |
CComboBox::SetItemDataPtr |
Imposta il puntatore a 32 bit associato all'elemento specificato in una casella combinata. |
CComboBox::SetItemHeight |
Imposta l'altezza degli elementi dell'elenco in una casella combinata o l'altezza della parte di controllo di modifica (o testo statico) di una casella combinata. |
CComboBox::SetLocale |
Imposta l'identificatore delle impostazioni locali per una casella combinata. |
CComboBox::SetMinVisibleItems |
Imposta il numero minimo di elementi visibili nell'elenco a discesa della casella combinata corrente. |
CComboBox::SetTopIndex |
Indica alla parte casella di riepilogo della casella combinata di visualizzare l'elemento con l'indice specificato nella parte superiore. |
CComboBox::ShowDropDown |
Visualizza o nasconde la casella di riepilogo di una casella combinata con lo CBS_DROPDOWN stile o CBS_DROPDOWNLIST . |
Osservazioni:
Una casella combinata è costituita da una casella di riepilogo combinata con un controllo statico o un controllo di modifica. La parte casella di riepilogo del controllo può essere visualizzata in qualsiasi momento o può essere visualizzata solo quando l'utente seleziona la freccia a discesa accanto al controllo.
L'elemento attualmente selezionato (se presente) nella casella di riepilogo viene visualizzato nel controllo statico o di modifica. Inoltre, se la casella combinata ha lo stile elenco a discesa, l'utente può digitare il carattere iniziale di uno degli elementi nell'elenco e la casella di riepilogo, se visibile, evidenzia l'elemento successivo con tale carattere iniziale.
Nella tabella seguente vengono confrontati i tre stili casella combinata.
Style | Quando è visibile la casella di riepilogo | Controllo statico o di modifica |
---|---|---|
Semplice | Sempre | Modifica |
Elenco a discesa | Quando viene eliminato | Modifica |
Drop-down list | Quando viene eliminato | Statico |
È possibile creare un CComboBox
oggetto da un modello di finestra di dialogo o direttamente nel codice. In entrambi i casi chiamare prima il costruttore CComboBox
per costruire l'oggetto CComboBox
, quindi chiamare la Create
funzione membro per creare il controllo e collegarlo all'oggetto CComboBox
.
Se si desidera gestire i messaggi di notifica di Windows inviati da una casella combinata al relativo elemento 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 casella combinata 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( );
Non è possibile prevedere l'ordine in cui verranno inviate determinate notifiche. In particolare, una CBN_SELCHANGE
notifica può verificarsi prima o dopo una CBN_CLOSEUP
notifica.
Le potenziali voci della mappa messaggi sono le seguenti:
ON_CBN_CLOSEUP
(Windows 3.1 e versioni successive). La casella di riepilogo di una casella combinata è stata chiusa. Questo messaggio di notifica non viene inviato per una casella combinata con loCBS_SIMPLE
stile .ON_CBN_DBLCLK
L'utente fa doppio clic su una stringa nella casella di riepilogo di una casella combinata. Questo messaggio di notifica viene inviato solo per una casella combinata con loCBS_SIMPLE
stile . Per una casella combinata con loCBS_DROPDOWN
stile oCBS_DROPDOWNLIST
, un doppio clic non può verificarsi perché un singolo clic nasconde la casella di riepilogo.ON_CBN_DROPDOWN
La casella di riepilogo di una casella combinata sta per essere resa visibile. Questo messaggio di notifica può verificarsi solo per una casella combinata con loCBS_DROPDOWN
stile oCBS_DROPDOWNLIST
.ON_CBN_EDITCHANGE
L'utente ha eseguito un'azione che potrebbe aver modificato il testo nella parte di controllo di modifica di una casella combinata. A differenza delCBN_EDITUPDATE
messaggio, questo messaggio viene inviato dopo che Windows aggiorna la schermata. Non viene inviato se la casella combinata ha loCBS_DROPDOWNLIST
stile.ON_CBN_EDITUPDATE
La parte di controllo di modifica di una casella combinata sta per visualizzare il testo modificato. Questo messaggio di notifica viene inviato dopo che il controllo ha formattato il testo, ma prima di visualizzare il testo. Non viene inviato se la casella combinata ha loCBS_DROPDOWNLIST
stile.ON_CBN_ERRSPACE
La casella combinata non può allocare memoria sufficiente per soddisfare una richiesta specifica.ON_CBN_SELENDCANCEL
(Windows 3.1 e versioni successive). Indica che la selezione dell'utente deve essere annullata. L'utente fa clic su un elemento e quindi fa clic su un'altra finestra o controllo per nascondere la casella di riepilogo di una casella combinata. Questo messaggio di notifica viene inviato prima delCBN_CLOSEUP
messaggio di notifica per indicare che la selezione dell'utente deve essere ignorata. IlCBN_SELENDCANCEL
messaggio di notifica oCBN_SELENDOK
viene inviato anche se ilCBN_CLOSEUP
messaggio di notifica non viene inviato (come nel caso di una casella combinata con loCBS_SIMPLE
stile).ON_CBN_SELENDOK
L'utente seleziona un elemento e quindi preme INVIO oppure fa clic sul tasto FRECCIA GIÙ per nascondere la casella di riepilogo di una casella combinata. Questo messaggio di notifica viene inviato prima delCBN_CLOSEUP
messaggio per indicare che la selezione dell'utente deve essere considerata valida. IlCBN_SELENDCANCEL
messaggio di notifica oCBN_SELENDOK
viene inviato anche se ilCBN_CLOSEUP
messaggio di notifica non viene inviato (come nel caso di una casella combinata con loCBS_SIMPLE
stile).ON_CBN_KILLFOCUS
La casella combinata sta perdendo lo stato attivo per l'input.ON_CBN_SELCHANGE
La selezione nella casella di riepilogo di una casella combinata sta per essere modificata in seguito a un clic dell'utente nella casella di riepilogo o alla modifica della selezione utilizzando i tasti di direzione. Durante l'elaborazione di questo messaggio, il testo nel controllo di modifica della casella combinata può essere recuperato solo tramiteGetLBText
o un'altra funzione simile.GetWindowText
non può essere utilizzato.ON_CBN_SETFOCUS
La casella combinata riceve lo stato attivo per l'input.
Se si crea un CComboBox
oggetto all'interno di una finestra di dialogo (tramite una risorsa di dialogo), l'oggetto CComboBox
viene eliminato automaticamente quando l'utente chiude la finestra di dialogo.
Se si incorpora un oggetto all'interno di CComboBox
un altro oggetto finestra, non è necessario eliminarlo. Se si crea l'oggetto CComboBox
nello stack, viene eliminato automaticamente. Se si crea l'oggetto nell'heap CComboBox
usando la new
funzione , è necessario chiamare delete
sull'oggetto per distruggerlo quando la casella combinata di Windows viene eliminata definitivamente.
Nota Se si desidera gestire WM_KEYDOWN
e WM_CHAR
messaggi, è necessario sottoclassare i controlli casella di riepilogo e modifica della casella combinata, derivare classi da CEdit
e CListBox
e aggiungere gestori per tali messaggi alle classi derivate. Per ulteriori informazioni, vedere CWnd::SubclassWindow
.
Gerarchia di ereditarietà
CComboBox
Requisiti
Intestazione: afxwin.h
CComboBox::AddString
Aggiunge una stringa alla casella di riepilogo di una casella combinata.
int AddString(LPCTSTR lpszString);
Parametri
lpszString
Punta alla stringa con terminazione Null da aggiungere.
Valore restituito
Se il valore restituito è maggiore o uguale a 0, è l'indice in base zero alla stringa nella casella di riepilogo. Il valore restituito è CB_ERR
se si verifica un errore. Il valore restituito è CB_ERRSPACE
se è disponibile spazio insufficiente per archiviare la nuova stringa.
Osservazioni:
Se la casella di riepilogo non è stata creata con lo CBS_SORT
stile, la stringa viene aggiunta alla fine dell'elenco. In caso contrario, la stringa viene inserita nell'elenco e l'elenco viene ordinato.
Nota
Questa funzione non è supportata dal controllo Windows ComboBoxEx
. Per altre informazioni su questo controllo, vedere ComboBoxEx
Controlli in Windows SDK.
Per inserire una stringa in una posizione specifica all'interno dell'elenco, usare la InsertString
funzione membro.
Esempio
// Add 20 items to the combo box.
CString str;
for (int i = 0; i < 20; i++)
{
str.Format(_T("item string %d"), i);
m_pComboBox->AddString(str);
}
CComboBox::CComboBox
Costruisce un oggetto CComboBox
.
CComboBox();
Esempio
// Declare a local CComboBox object.
CComboBox myComboBox;
// Declare a dynamic CComboBox object.
CComboBox *pmyComboBox = new CComboBox;
CComboBox::Clear
Elimina (cancella) la selezione corrente, se presente, nel controllo di modifica della casella combinata.
void Clear();
Osservazioni:
Per eliminare la selezione corrente e posizionare il contenuto eliminato negli Appunti, utilizzare la Cut
funzione membro.
Esempio
// Delete all of the text from the combo box's edit control.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Clear();
CComboBox::CompareItem
Chiamato dal framework per determinare la posizione relativa di un nuovo elemento nella parte casella di riepilogo di una casella combinata di disegno proprietario ordinata.
virtual int CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);
Parametri
lpCompareItemStruct
Puntatore lungo a una COMPAREITEMSTRUCT
struttura.
Valore restituito
Indica la posizione relativa dei due elementi descritti nella COMPAREITEMSTRUCT
struttura. Può essere uno dei valori seguenti:
Valore | Significato |
---|---|
-1 | L'elemento 1 ordina prima dell'elemento 2. |
0 | L'elemento 1 e l'elemento 2 ordinano lo stesso. |
1 | L'elemento 1 viene ordinato dopo l'elemento 2. |
Vedere CWnd::OnCompareItem
per una descrizione di COMPAREITEMSTRUCT
.
Osservazioni:
Per impostazione predefinita, questa funzione membro non esegue alcuna operazione. Se si crea una casella combinata di disegno proprietario con lo stile , è necessario eseguire l'override LBS_SORT
di questa funzione membro per facilitare il framework nell'ordinamento di nuovi elementi aggiunti alla casella di riepilogo.
Esempio
// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example compares two items using strcmp to sort items in reverse
// alphabetical order. The combo box control was created with the
// following code:
// pmyComboBox->Create(
// WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
// CBS_SORT|CBS_OWNERDRAWVARIABLE,
// myRect, pParentWnd, 1);
//
int CMyComboBox::CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct)
{
int iComp = 0;
ASSERT(lpCompareItemStruct->CtlType == ODT_COMBOBOX);
LPCTSTR lpszText1 = (LPCTSTR)lpCompareItemStruct->itemData1;
ASSERT(lpszText1 != NULL);
LPCTSTR lpszText2 = (LPCTSTR)lpCompareItemStruct->itemData2;
ASSERT(lpszText2 != NULL);
if (NULL != lpszText1 && NULL != lpszText2)
{
iComp = _tcscmp(lpszText2, lpszText1);
}
return iComp;
}
CComboBox::Copy
Copia la selezione corrente, se presente, nel controllo di modifica della casella combinata negli Appunti in CF_TEXT
formato .
void Copy();
Esempio
// Copy all of the text from the combo box's edit control
// to the clipboard.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Copy();
CComboBox::Create
Crea la casella combinata e la associa all'oggetto CComboBox
.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parametri
dwStyle
Specifica lo stile della casella combinata. Applicare qualsiasi combinazione di stili casella combinata alla casella.
rect
Punta alla posizione e alle dimensioni della casella combinata. Può essere una RECT
struttura o un CRect
oggetto .
pParentWnd
Specifica la finestra padre della casella combinata (in genere un ).CDialog
Non deve essere NULL
.
nID
Specifica l'ID di controllo della casella combinata.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
Si costruisce un CComboBox
oggetto in due passaggi. Chiamare innanzitutto il costruttore e quindi chiamare Create
, che crea la casella combinata di Windows e la associa all'oggetto CComboBox
.
Quando Create
viene eseguito, Windows invia i WM_NCCREATE
messaggi , WM_CREATE
, WM_NCCALCSIZE
e WM_GETMINMAXINFO
alla casella combinata.
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, derivare una classe da CComboBox
, aggiungere una mappa messaggi alla nuova classe ed eseguire l'override delle funzioni membro del gestore di 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 combinata. :
WS_CHILD
SempreWS_VISIBLE
SolitamenteWS_DISABLED
RaramenteWS_VSCROLL
Per aggiungere lo scorrimento verticale per la casella di riepilogo nella casella combinataWS_HSCROLL
Per aggiungere lo scorrimento orizzontale per la casella di riepilogo nella casella combinataWS_GROUP
Per raggruppare i controlliWS_TABSTOP
Per includere la casella combinata nell'ordine di tabulazione
Esempio
m_pComboBox->Create(
WS_CHILD | WS_VISIBLE | WS_VSCROLL | CBS_DROPDOWNLIST,
CRect(10, 10, 200, 100), pParentWnd, 1);
CComboBox::Cut
Elimina (taglia) la selezione corrente, se presente, nel controllo di modifica casella combinata e copia il testo eliminato negli Appunti in CF_TEXT
formato.
void Cut();
Osservazioni:
Per eliminare la selezione corrente senza inserire il testo eliminato negli Appunti, chiamare la Clear
funzione membro.
Esempio
// Delete all of the text from the combo box's edit control and copy it
// to the clipboard.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Cut();
CComboBox::DeleteItem
Chiamato dal framework quando l'utente elimina un elemento da un oggetto di disegno CComboBox
proprietario o elimina definitivamente la casella combinata.
virtual void DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);
Parametri
lpDeleteItemStruct
Puntatore lungo a una struttura di Windows DELETEITEMSTRUCT
che contiene informazioni sull'elemento eliminato. Vedere CWnd::OnDeleteItem
per una descrizione di questa struttura.
Osservazioni:
L'implementazione predefinita di questa funzione non esegue alcuna operazione. Eseguire l'override di questa funzione per ridisegnare la casella combinata in base alle esigenze.
Esempio
// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example simply dumps the item's text. The combo box control was
// created with the following code:
// pmyComboBox->Create(
// WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
// CBS_SORT|CBS_OWNERDRAWVARIABLE,
// myRect, pParentWnd, 1);
//
void CMyComboBox::DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct)
{
ASSERT(lpDeleteItemStruct->CtlType == ODT_COMBOBOX);
LPTSTR lpszText = (LPTSTR)lpDeleteItemStruct->itemData;
ASSERT(lpszText != NULL);
AFXDUMP(lpszText);
}
CComboBox::DeleteString
Elimina l'elemento nella posizione nIndex
dalla casella combinata.
int DeleteString(UINT nIndex);
Parametri
nIndex
Specifica l'indice della stringa da eliminare.
Valore restituito
Se il valore restituito è maggiore o uguale a 0, è un conteggio delle stringhe rimanenti nell'elenco. Il valore restituito è CB_ERR
se nIndex
specifica un indice maggiore del numero di elementi nell'elenco.
Osservazioni:
Tutti gli elementi che seguono nIndex
ora spostano verso il basso una posizione. Ad esempio, se una casella combinata contiene due elementi, l'eliminazione del primo elemento causerà la presenza dell'elemento rimanente nella prima posizione. nIndex
=0 per l'elemento nella prima posizione.
Esempio
// Delete every item from the combo box.
for (int i = m_pComboBox->GetCount() - 1; i >= 0; i--)
{
m_pComboBox->DeleteString(i);
}
CComboBox::Dir
Aggiunge un elenco di nomi file o unità alla casella di riepilogo di una casella combinata.
int Dir(
UINT attr,
LPCTSTR lpszWildCard);
Parametri
attr
Può essere qualsiasi combinazione dei enum
valori descritti in CFile::GetStatus
o qualsiasi combinazione dei valori seguenti:
DDL_READWRITE
Il file può essere letto o scritto in .DDL_READONLY
Il file può essere letto da ma non scritto in.DDL_HIDDEN
Il file è nascosto e non viene visualizzato in un elenco di directory.DDL_SYSTEM
Il file è un file di sistema.DDL_DIRECTORY
Il nome specificato dalpszWildCard
specifica una directory.DDL_ARCHIVE
Il file è stato archiviato.DDL_DRIVES
Includere tutte le unità che corrispondono al nome specificato dalpszWildCard
.DDL_EXCLUSIVE
Flag esclusivo. Se il flag esclusivo è impostato, vengono elencati solo i file del tipo specificato. In caso contrario, i file del tipo specificato vengono elencati oltre ai file "normali".
lpszWildCard
Punta a una stringa di specifica del file. La stringa può contenere caratteri jolly, ad esempio *.*
.
Valore restituito
Se il valore restituito è maggiore o uguale a 0, è l'indice in base zero dell'ultimo nome file aggiunto all'elenco. Il valore restituito è CB_ERR
se si verifica un errore. Il valore restituito è CB_ERRSPACE
se è disponibile spazio insufficiente per archiviare le nuove stringhe.
Osservazioni:
Questa funzione non è supportata dal controllo Windows ComboBoxEx
. Per altre informazioni su questo controllo, vedere ComboBoxEx
Controlli in Windows SDK.
Esempio
// Add all the files and directories in the windows directory.
TCHAR lpszWinPath[MAX_PATH], lpszOldPath[MAX_PATH];
VERIFY(0 < ::GetWindowsDirectory(lpszWinPath, MAX_PATH));
// Make the windows directory the current directory.
::GetCurrentDirectory(MAX_PATH, lpszOldPath);
::SetCurrentDirectory(lpszWinPath);
m_pComboBox->ResetContent();
m_pComboBox->Dir(DDL_READWRITE | DDL_DIRECTORY, _T("*.*"));
// Reset the current directory to its previous path.
::SetCurrentDirectory(lpszOldPath);
CComboBox::DrawItem
Chiamato dal framework quando cambia un aspetto visivo di una casella combinata di disegno proprietario.
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
Parametri
lpDrawItemStruct
Puntatore a una DRAWITEMSTRUCT
struttura che contiene informazioni sul tipo di disegno richiesto.
Osservazioni:
Il itemAction
membro della DRAWITEMSTRUCT
struttura definisce l'azione di disegno da eseguire. Vedere CWnd::OnDrawItem
per una descrizione di questa struttura.
Per impostazione predefinita, questa funzione membro non esegue alcuna operazione. Eseguire l'override di questa funzione membro per implementare il disegno per un oggetto di disegno CComboBox
proprietario. Prima di terminare questa funzione membro, l'applicazione deve ripristinare tutti gli oggetti GDI (Graphics Device Interface) selezionati per il contesto di visualizzazione fornito in lpDrawItemStruct
.
Esempio
// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example draws an item's text centered vertically and horizontally. The
// combo box control was created with the following code:
// pmyComboBox->Create(
// WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
// CBS_SORT|CBS_OWNERDRAWVARIABLE,
// myRect, pParentWnd, 1);
//
void CMyComboBox::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
ASSERT(lpDrawItemStruct->CtlType == ODT_COMBOBOX);
LPCTSTR lpszText = (LPCTSTR)lpDrawItemStruct->itemData;
ASSERT(lpszText != NULL);
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
// Save these value to restore them when done drawing.
COLORREF crOldTextColor = dc.GetTextColor();
COLORREF crOldBkColor = dc.GetBkColor();
// If this item is selected, set the background color
// and the text color to appropriate values. Erase
// the rect by filling it with the background color.
if ((lpDrawItemStruct->itemAction & ODA_SELECT) &&
(lpDrawItemStruct->itemState & ODS_SELECTED))
{
dc.SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));
dc.SetBkColor(::GetSysColor(COLOR_HIGHLIGHT));
dc.FillSolidRect(&lpDrawItemStruct->rcItem, ::GetSysColor(COLOR_HIGHLIGHT));
}
else
{
dc.FillSolidRect(&lpDrawItemStruct->rcItem, crOldBkColor);
}
// Draw the text.
dc.DrawText(
lpszText,
(int)_tcslen(lpszText),
&lpDrawItemStruct->rcItem,
DT_CENTER | DT_SINGLELINE | DT_VCENTER);
// Reset the background color and the text color back to their
// original values.
dc.SetTextColor(crOldTextColor);
dc.SetBkColor(crOldBkColor);
dc.Detach();
}
CComboBox::FindString
Trova, ma non seleziona, la prima stringa che contiene il prefisso specificato nella casella di riepilogo di una casella combinata.
int FindString(
int nStartAfter,
LPCTSTR lpszString) const;
Parametri
nStartAfter
Contiene l'indice in base zero dell'elemento prima della ricerca del primo elemento. Quando la ricerca raggiunge la parte inferiore della casella di riepilogo, continua dalla parte superiore della casella di riepilogo all'elemento specificato da nStartAfter
. Se -1, viene eseguita la ricerca dell'intera casella di riepilogo dall'inizio.
lpszString
Punta alla stringa con terminazione Null contenente il prefisso da cercare. La ricerca è indipendente dal caso, quindi questa stringa può contenere qualsiasi combinazione di lettere maiuscole e minuscole.
Valore restituito
Se il valore restituito è maggiore o uguale a 0, è l'indice in base zero dell'elemento corrispondente. È CB_ERR
se la ricerca non è riuscita.
Osservazioni:
Questa funzione non è supportata dal controllo Windows ComboBoxEx
. Per altre informazioni su questo controllo, vedere ComboBoxEx
Controlli in Windows SDK.
Esempio
// The string to match.
LPCTSTR lpszmyString = _T("item");
// Delete all items that begin with the specified string.
int nItem = 0;
while ((nItem = m_pComboBox->FindString(nItem, lpszmyString)) != CB_ERR)
{
m_pComboBox->DeleteString(nItem);
}
CComboBox::FindStringExact
Chiamare la FindStringExact
funzione membro per trovare la prima stringa della casella di riepilogo (in una casella combinata) corrispondente alla stringa specificata in lpszFind
.
int FindStringExact(
int nIndexStart,
LPCTSTR lpszFind) const;
Parametri
nIndexStart
Specifica l'indice in base zero dell'elemento prima della ricerca del primo elemento. Quando la ricerca raggiunge la parte inferiore della casella di riepilogo, continua dalla parte superiore della casella di riepilogo all'elemento specificato da nIndexStart
. Se nIndexStart
è -1, viene eseguita la ricerca dell'intera casella di riepilogo dall'inizio.
lpszFind
Punta alla stringa con terminazione Null da cercare. Questa stringa può contenere un nome file completo, inclusa l'estensione. La ricerca non fa distinzione tra maiuscole e minuscole, pertanto questa stringa può contenere qualsiasi combinazione di lettere maiuscole e minuscole.
Valore restituito
Indice in base zero dell'elemento corrispondente o CB_ERR
se la ricerca non è riuscita.
Osservazioni:
Se la casella combinata è stata creata con uno stile di disegno proprietario ma senza lo CBS_HASSTRINGS
stile, FindStringExact
tenta di trovare la corrispondenza con il valore doubleword rispetto al valore di lpszFind.
Esempio
// The string to match.
LPCTSTR lpszmyExactString = _T("item 5");
// Delete all items that exactly match the specified string.
int nDex = 0;
while ((nDex = m_pComboBox->FindStringExact(nDex, lpszmyExactString)) != CB_ERR)
{
m_pComboBox->DeleteString(nDex);
}
CComboBox::GetComboBoxInfo
Recupera informazioni per l'oggetto CComboBox
.
BOOL GetComboBoxInfo(PCOMBOBOXINFO pcbi) const;
Parametri
*pcbi*<br/> A pointer to the [
COMBOBOXINFO'](/windows/win32/api/winuser/ns-winuser-comboboxinfo).
Valore restituito
Restituisce TRUE
in caso di esito positivo, FALSE
in caso di errore.
Osservazioni:
Questa funzione membro emula la funzionalità del CB_GETCOMBOBOXINFO
messaggio, come descritto in Windows SDK.
CComboBox::GetCount
Chiamare questa funzione membro per recuperare il numero di elementi nella parte casella di riepilogo di una casella combinata.
int GetCount() const;
Valore restituito
Numero di elementi. Il conteggio restituito è maggiore del valore di indice dell'ultimo elemento (l'indice è in base zero). È CB_ERR
se si verifica un errore.
Esempio
// Add 10 items to the combo box.
CString strItem;
for (int i = 0; i < 10; i++)
{
strItem.Format(_T("item %d"), i);
m_pComboBox->AddString(strItem);
}
// Verify the 10 items were added to the combo box.
ASSERT(m_pComboBox->GetCount() == 10);
CComboBox::GetCueBanner
Ottiene il testo del segnale visualizzato per un controllo casella combinata.
CString GetCueBanner() const;
BOOL GetCueBanner(
LPTSTR lpszText,
int cchText) const;
Parametri
lpszText
[out] Puntatore a un buffer che riceve il testo del banner del segnale.
cchText
[in] Dimensione del buffer a cui punta il lpszText
parametro.
Valore restituito
Nel primo overload, un CString
oggetto che contiene il testo del banner del segnale, se esistente; in caso contrario, un CString
oggetto con lunghezza zero.
oppure
Nel secondo overload, TRUE
se questo metodo ha esito positivo; in caso contrario, FALSE
.
Osservazioni:
Il testo cue è un prompt visualizzato nell'area di input del controllo casella combinata. Il testo del segnale viene visualizzato fino a quando l'utente non fornisce l'input.
Questo metodo invia il CB_GETCUEBANNER
messaggio, descritto in Windows SDK.
CComboBox::GetCurSel
Chiamare questa funzione membro per determinare quale elemento della casella combinata è selezionata.
int GetCurSel() const;
Valore restituito
Indice in base zero dell'elemento attualmente selezionato nella casella di riepilogo di una casella combinata o CB_ERR
se non è selezionato alcun elemento.
Osservazioni:
GetCurSel
restituisce un indice nell'elenco.
Esempio
// Select the next item of the currently selected item
// in the combo box.
int nIndex = m_pComboBox->GetCurSel();
int nCount = m_pComboBox->GetCount();
if ((nIndex != CB_ERR) && (nCount > 1))
{
if (++nIndex < nCount)
m_pComboBox->SetCurSel(nIndex);
else
m_pComboBox->SetCurSel(0);
}
CComboBox::GetDroppedControlRect
Chiamare la GetDroppedControlRect
funzione membro per recuperare le coordinate dello schermo della casella di riepilogo visibile (eliminata) di una casella combinata a discesa.
void GetDroppedControlRect(LPRECT lprect) const;
Parametri
lprect
Punta alla struttura RECT che deve ricevere le coordinate.
Esempio
// This example move a combo box so that the upper left
// corner of the combo box is at a specific point.
// The point to move the combo box to.
CPoint myPoint(30, 10);
CRect r;
m_pComboBox->GetDroppedControlRect(&r);
m_pComboBox->GetParent()->ScreenToClient(&r);
r.OffsetRect(myPoint - r.TopLeft());
m_pComboBox->MoveWindow(&r);
CComboBox::GetDroppedState
Chiamare la GetDroppedState
funzione membro per determinare se la casella di riepilogo di una casella combinata a discesa è visibile (eliminata).
BOOL GetDroppedState() const;
Valore restituito
Diverso da zero se la casella di riepilogo è visibile; in caso contrario, 0.
Esempio
// Show the dropdown list box if it is not already dropped.
if (!m_pComboBox->GetDroppedState())
m_pComboBox->ShowDropDown(TRUE);
CComboBox::GetDroppedWidth
Chiamare questa funzione per recuperare la larghezza minima consentita, in pixel, della casella di riepilogo di una casella combinata.
int GetDroppedWidth() const;
Valore restituito
Se ha esito positivo, la larghezza minima consentita, in pixel; in caso contrario, CB_ERR
.
Osservazioni:
Questa funzione si applica solo alle caselle combinate con lo CBS_DROPDOWN
stile o CBS_DROPDOWNLIST
.
Per impostazione predefinita, la larghezza minima consentita della casella di riepilogo a discesa è 0. La larghezza minima consentita può essere impostata chiamando SetDroppedWidth
. Quando viene visualizzata la parte casella di riepilogo della casella combinata, la larghezza è maggiore della larghezza minima consentita o della larghezza della casella combinata.
Esempio
Vedere l'esempio per SetDroppedWidth
.
CComboBox::GetEditSel
Ottiene le posizioni del carattere iniziale e finale della selezione corrente nel controllo di modifica di una casella combinata.
DWORD GetEditSel() const;
Valore restituito
Valore a 32 bit che contiene la posizione iniziale nella parola con ordine basso e la posizione del primo carattere non selezionato dopo la fine della selezione nella parola in ordine elevato. Se questa funzione viene utilizzata in una casella combinata senza un controllo di modifica, CB_ERR
viene restituita.
Esempio
DWORD dwSel;
// Set the selection to be all characters after the current selection.
if ((dwSel = m_MyComboBox.GetEditSel()) != CB_ERR)
{
m_MyComboBox.SetEditSel(HIWORD(dwSel), -1);
}
CComboBox::GetExtendedUI
Chiamare la GetExtendedUI
funzione membro per determinare se una casella combinata ha l'interfaccia utente predefinita o l'interfaccia utente estesa.
BOOL GetExtendedUI() const;
Valore restituito
Diverso da zero se la casella combinata ha l'interfaccia utente estesa; in caso contrario, 0.
Osservazioni:
L'interfaccia utente estesa può essere identificata nei modi seguenti:
Facendo clic sul controllo statico viene visualizzata la casella di riepilogo solo per le caselle combinate con lo
CBS_DROPDOWNLIST
stile.Premendo FRECCIA GIÙ viene visualizzata la casella di riepilogo (F4 è disabilitata).
Lo scorrimento nel controllo statico è disabilitato quando l'elenco di elementi non è visibile (i tasti di direzione sono disabilitati).
Esempio
// Use the extended UI if it is not already set.
if (!m_pComboBox->GetExtendedUI())
m_pComboBox->SetExtendedUI(TRUE);
CComboBox::GetHorizontalExtent
Recupera dalla casella combinata la larghezza in pixel in base alla quale è possibile scorrere orizzontalmente la parte casella di riepilogo della casella combinata.
UINT GetHorizontalExtent() const;
Valore restituito
Larghezza scorrevole della parte casella di riepilogo della casella combinata, in pixel.
Osservazioni:
Questa opzione è applicabile solo se la parte casella di riepilogo della casella combinata ha una barra di scorrimento orizzontale.
Esempio
// Find the longest string in the combo box.
CString strText;
CSize sz;
UINT dxText = 0;
CDC *pDCCombo = m_pComboBox->GetDC();
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->GetLBText(i, strText);
sz = pDCCombo->GetTextExtent(strText);
if (sz.cx > (LONG)dxText)
dxText = sz.cx;
}
m_pComboBox->ReleaseDC(pDCCombo);
// Set the horizontal extent only if the current extent is not large enough.
if (m_pComboBox->GetHorizontalExtent() < dxText)
{
m_pComboBox->SetHorizontalExtent(dxText);
ASSERT(m_pComboBox->GetHorizontalExtent() == dxText);
}
CComboBox::GetItemData
Recupera il valore a 32 bit fornito dall'applicazione associato all'elemento casella combinata specificata.
DWORD_PTR GetItemData(int nIndex) const;
Parametri
nIndex
Contiene l'indice in base zero di un elemento nella casella di riepilogo della casella combinata.
Valore restituito
Valore a 32 bit associato all'elemento o CB_ERR
se si verifica un errore.
Osservazioni:
Il valore a 32 bit può essere impostato con il dwItemData
parametro di una SetItemData
chiamata di funzione membro. Usare la GetItemDataPtr
funzione membro se il valore a 32 bit da recuperare è un puntatore (void
*).
Esempio
// If any item's data is equal to zero then reset it to -1.
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
if (m_pComboBox->GetItemData(i) == 0)
{
m_pComboBox->SetItemData(i, (DWORD)-1);
}
}
CComboBox::GetItemDataPtr
Recupera il valore a 32 bit fornito dall'applicazione associato all'elemento casella combinata specificata come puntatore (void
*).
void* GetItemDataPtr(int nIndex) const;
Parametri
nIndex
Contiene l'indice in base zero di un elemento nella casella di riepilogo della casella combinata.
Valore restituito
Recupera un puntatore o -1 se si verifica un errore.
Esempio
LPVOID lpmyPtr = m_pComboBox->GetItemDataPtr(5);
// Check all the items in the combo box; if an item's
// data pointer is equal to my pointer then reset it to NULL.
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
if (m_pComboBox->GetItemDataPtr(i) == lpmyPtr)
{
m_pComboBox->SetItemDataPtr(i, NULL);
}
}
CComboBox::GetItemHeight
Chiamare la GetItemHeight
funzione membro per recuperare l'altezza degli elementi dell'elenco in una casella combinata.
int GetItemHeight(int nIndex) const;
Parametri
nIndex
Specifica il componente della casella combinata di cui recuperare l'altezza. Se il nIndex
parametro è -1, viene recuperata l'altezza della parte edit-control (o static-text) della casella combinata. Se la casella combinata ha lo CBS_OWNERDRAWVARIABLE
stile , nIndex
specifica l'indice in base zero dell'elemento di elenco di cui recuperare l'altezza. In caso contrario, nIndex
deve essere impostato su 0.
Valore restituito
Altezza, in pixel, dell'elemento specificato in una casella combinata. Il valore restituito è CB_ERR
se si verifica un errore.
Esempio
// Set the height of every item so the item
// is completely visible.
CString strLBText;
CSize size;
CDC *pDC = m_pComboBox->GetDC();
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->GetLBText(i, strLBText);
size = pDC->GetTextExtent(strLBText);
// Only want to set the item height if the current height
// is not big enough.
if (m_pComboBox->GetItemHeight(i) < size.cy)
m_pComboBox->SetItemHeight(i, size.cy);
}
m_pComboBox->ReleaseDC(pDC);
CComboBox::GetLBText
Ottiene una stringa dalla casella di riepilogo di una casella combinata.
int GetLBText(
int nIndex,
LPTSTR lpszText) const;
void GetLBText(
int nIndex,
CString& rString) const;
Parametri
nIndex
Contiene l'indice in base zero della stringa della casella di riepilogo da copiare.
lpszText
Punta a un buffer che deve ricevere la stringa. Il buffer deve avere spazio sufficiente per la stringa e un carattere Null di terminazione.
rString
Riferimento a un oggetto CString
.
Valore restituito
Lunghezza (in byte) della stringa, escluso il carattere Null di terminazione. Se nIndex
non specifica un indice valido, il valore restituito è CB_ERR
.
Osservazioni:
Il secondo formato di questa funzione membro riempie un CString
oggetto con il testo dell'elemento.
Se nIndex
non è valido, questa funzione genera un'eccezione E_INVALIDARG
(codice di errore: -2147024809
, 0x80070057
).
Esempio
// Dump all of the items in the combo box.
CString str1, str2;
int n;
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
n = m_pComboBox->GetLBTextLen(i);
m_pComboBox->GetLBText(i, str1.GetBuffer(n));
str1.ReleaseBuffer();
str2.Format(_T("item %d: %s\r\n"), i, str1.GetBuffer(0));
AFXDUMP(str2);
}
CComboBox::GetLBTextLen
Ottiene la lunghezza di una stringa nella casella di riepilogo di una casella combinata.
int GetLBTextLen(int nIndex) const;
Parametri
nIndex
Contiene l'indice in base zero della stringa della casella di riepilogo.
Valore restituito
Lunghezza della stringa in byte, escluso il carattere Null di terminazione. Se nIndex
non specifica un indice valido, il valore restituito è CB_ERR
.
Esempio
Vedere l'esempio per CComboBox::GetLBText
.
CComboBox::GetLocale
Recupera le impostazioni locali utilizzate dalla casella combinata.
LCID GetLocale() const;
Valore restituito
Valore dell'identificatore delle impostazioni locali (LCID) per le stringhe nella casella combinata.
Osservazioni:
Le impostazioni locali vengono utilizzate, ad esempio, per determinare l'ordinamento delle stringhe in una casella combinata ordinata.
Esempio
Vedere l'esempio per CComboBox::SetLocale
.
CComboBox::GetMinVisible
Ottiene il numero minimo di elementi visibili nell'elenco a discesa del controllo casella combinata corrente.
int GetMinVisible() const;
Valore restituito
Numero minimo di elementi visibili nell'elenco a discesa corrente.
Osservazioni:
Questo metodo invia il CB_GETMINVISIBLE
messaggio, descritto in Windows SDK.
CComboBox::GetTopIndex
Recupera l'indice in base zero del primo elemento visibile nella parte casella di riepilogo della casella combinata.
int GetTopIndex() const;
Valore restituito
Indice in base zero del primo elemento visibile nella parte casella di riepilogo della casella combinata, in caso contrario. CB_ERR
Osservazioni:
Inizialmente, l'elemento 0 si trova nella parte superiore della casella di riepilogo, ma se la casella di riepilogo viene scorrere, un altro elemento potrebbe trovarsi nella parte superiore.
Esempio
// Want an item in the bottom half to be the first visible item.
int nTop = m_pComboBox->GetCount() / 2;
if (m_pComboBox->GetTopIndex() < nTop)
{
m_pComboBox->SetTopIndex(nTop);
ASSERT(m_pComboBox->GetTopIndex() == nTop);
}
CComboBox::InitStorage
Alloca memoria per archiviare gli elementi della casella di riepilogo nella parte casella di riepilogo della casella combinata.
int InitStorage(
int nItems,
UINT nBytes);
Parametri
nItems
Specifica il numero di elementi da aggiungere.
nBytes
Specifica la quantità di memoria, espressa in byte, da allocare per le stringhe di elemento.
Valore restituito
Se l'operazione ha esito positivo, il numero massimo di elementi che la parte casella di riepilogo della casella combinata può archiviare prima che sia necessaria una riallocazione della memoria. In caso contrario CB_ERRSPACE
, significa che non è disponibile memoria sufficiente.
Osservazioni:
Chiamare questa funzione prima di aggiungere un numero elevato di elementi alla parte casella CComboBox
di riepilogo di .
Solo Windows 95/98: il wParam
parametro è limitato a valori a 16 bit. Ciò significa che le caselle di riepilogo non possono contenere più di 32.767 elementi. Anche se il numero di elementi è limitato, la dimensione totale degli elementi in una casella di riepilogo è limitata solo dalla memoria disponibile.
Questa funzione consente di velocizzare l'inizializzazione delle caselle di riepilogo con un numero elevato di elementi (più di 100). Prealloca la quantità di memoria specificata in modo che le funzioni successive AddString
, InsertString
e Dir
richiedono il tempo più breve possibile. È possibile usare stime per i parametri. Se si sovrastima, viene allocata una quantità di memoria aggiuntiva; se si sottovaluta, l'allocazione normale viene usata per gli elementi che superano l'importo preallocato.
Esempio
// Initialize the storage of the combo box to be 256 strings with
// about 10 characters per string, performance improvement.
int nAlloc = pmyComboBox->InitStorage(256, 10);
ASSERT(nAlloc != CB_ERRSPACE);
// Add 256 items to the combo box.
CString strAdd;
for (int i = 0; i < 256; i++)
{
strAdd.Format(_T("item string %d"), i);
m_pComboBox->AddString(strAdd);
}
CComboBox::InsertString
Inserisce una stringa nella casella di riepilogo di una casella combinata.
int InsertString(
int nIndex,
LPCTSTR lpszString);
Parametri
nIndex
Contiene l'indice in base zero della posizione nella casella di riepilogo che riceverà la stringa. Se questo parametro è -1, la stringa viene aggiunta alla fine dell'elenco.
lpszString
Punta a una stringa con terminazione null da inserire.
Valore restituito
Indice in base zero della posizione in cui è stata inserita la stringa. Il valore restituito è CB_ERR
se si verifica un errore. Il valore restituito è CB_ERRSPACE
se è disponibile spazio insufficiente per archiviare la nuova stringa.
Osservazioni:
A differenza della AddString
funzione membro, la InsertString
funzione membro non determina l'ordinamento di un elenco con lo CBS_SORT
stile.
Nota
Questa funzione non è supportata dal controllo Windows ComboBoxEx
. Per altre informazioni su questo controllo, vedere ComboBoxEx
Controlli in Windows SDK.
Esempio
// Insert items in between existing items.
CString strIns;
int nItems = m_pComboBox->GetCount();
for (int i = 0; i < nItems; i++)
{
strIns.Format(_T("item string %c"), (char)('A' + i));
m_pComboBox->InsertString(2 * i, strIns);
}
CComboBox::LimitText
Limita la lunghezza in byte del testo che l'utente può immettere nel controllo di modifica di una casella combinata.
BOOL LimitText(int nMaxChars);
Parametri
nMaxChars
Specifica la lunghezza in byte del testo che l'utente può immettere. Se questo parametro è 0, la lunghezza del testo viene impostata su 65.535 byte.
Valore restituito
Diverso da zero se ha esito positivo. Se viene chiamato per una casella combinata con lo stile CBS_DROPDOWNLIST
o per una casella combinata senza un controllo di modifica, il valore restituito è CB_ERR
.
Osservazioni:
Se la casella combinata non ha lo stile CBS_AUTOHSCROLL
, l'impostazione del limite di testo su maggiore delle dimensioni del controllo di modifica non avrà alcun effetto.
LimitText
limita solo il testo che l'utente può immettere. Non ha alcun effetto sul testo già presente nel controllo di modifica quando il messaggio viene inviato, né influisce sulla lunghezza del testo copiato nel controllo di modifica quando viene selezionata una stringa nella casella di riepilogo.
Esempio
// Limit the number of characters in the combo box's edit control to
// be the maximum number visible.
// Get the text metrics for the combo box; needed for the
// average character width.
TEXTMETRIC tm;
CDC *pDCCB = m_pComboBox->GetDC();
pDCCB->GetTextMetrics(&tm);
m_pComboBox->ReleaseDC(pDCCB);
CRect rect;
m_pComboBox->GetClientRect(&rect);
m_pComboBox->LimitText(rect.Width() / tm.tmAveCharWidth);
CComboBox::MeasureItem
Chiamato dal framework quando viene creata una casella combinata con uno stile di disegno proprietario.
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 della casella di riepilogo nella casella combinata. Se la casella combinata viene creata con lo CBS_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.
L'uso dello CBS_OWNERDRAWFIXED
stile in una casella combinata di disegno proprietario creata con la SubclassDlgItem
funzione membro di CWnd
comporta ulteriori considerazioni sulla programmazione. Vedere la discussione nella nota tecnica 14.
Vedere CWnd::OnMeasureItem
per una descrizione della MEASUREITEMSTRUCT
struttura.
Esempio
// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example measures an item and sets the height of the item to twice the
// vertical extent of its text. The combo box control was created with
// the following code:
// pmyComboBox->Create(
// WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
// CBS_SORT|CBS_OWNERDRAWVARIABLE,
// myRect, pParentWnd, 1);
//
void CMyComboBox::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
ASSERT(lpMeasureItemStruct->CtlType == ODT_COMBOBOX);
if (lpMeasureItemStruct->itemID != (UINT)-1)
{
LPCTSTR lpszText = (LPCTSTR)lpMeasureItemStruct->itemData;
ASSERT(lpszText != NULL);
CSize sz;
CDC *pDC = GetDC();
sz = pDC->GetTextExtent(lpszText);
ReleaseDC(pDC);
lpMeasureItemStruct->itemHeight = 2 * sz.cy;
}
}
CComboBox::Paste
Inserisce i dati dagli Appunti nel controllo di modifica della casella combinata in corrispondenza della posizione corrente del cursore.
void Paste();
Osservazioni:
I dati vengono inseriti solo se gli Appunti contengono dati in CF_TEXT
formato .
Esempio
// Replace all of the text in the combo box's edit control with the text
// in the clipboard.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Paste();
CComboBox::ResetContent
Rimuove tutti gli elementi dalla casella di riepilogo e il controllo di modifica di una casella combinata.
void ResetContent();
Esempio
// Delete all the items from the combo box.
m_pComboBox->ResetContent();
ASSERT(m_pComboBox->GetCount() == 0);
CComboBox::SelectString
Cerca una stringa nella casella di riepilogo di una casella combinata e, se la stringa viene trovata, seleziona la stringa nella casella di riepilogo e la copia nel controllo di modifica.
int SelectString(
int nStartAfter,
LPCTSTR lpszString);
Parametri
nStartAfter
Contiene l'indice in base zero dell'elemento prima della ricerca del primo elemento. Quando la ricerca raggiunge la parte inferiore della casella di riepilogo, continua dalla parte superiore della casella di riepilogo all'elemento specificato da nStartAfter
. Se -1, viene eseguita la ricerca dell'intera casella di riepilogo dall'inizio.
lpszString
Punta alla stringa con terminazione Null contenente il prefisso da cercare. La ricerca è indipendente dal caso, quindi questa stringa può contenere qualsiasi combinazione di lettere maiuscole e minuscole.
Valore restituito
Indice in base zero dell'elemento selezionato se la stringa è stata trovata. Se la ricerca non è riuscita, il valore restituito è CB_ERR
e la selezione corrente non viene modificata.
Osservazioni:
Una stringa viene selezionata solo se i caratteri iniziali (dal punto iniziale) corrispondono ai caratteri nella stringa di prefisso.
Si noti che le SelectString
funzioni membro e FindString
trovano entrambe una stringa, ma la SelectString
funzione membro seleziona anche la stringa.
Esempio
// The string to match.
LPCTSTR lpszSelect = _T("item");
// Select the item that begins with the specified string.
int nSel = m_pComboBox->SelectString(0, lpszSelect);
ASSERT(nSel != CB_ERR);
CComboBox::SetCueBanner
Imposta il testo del segnale visualizzato per un controllo casella combinata.
BOOL SetCueBanner(LPCTSTR lpszText);
Parametri
lpszText
[in] Puntatore a un buffer con terminazione Null che contiene il testo del segnale.
Valore restituito
TRUE
se il metodo riesce; in caso contrario, FALSE
.
Osservazioni:
Il testo cue è un prompt visualizzato nell'area di input del controllo casella combinata. Il testo del segnale viene visualizzato fino a quando l'utente non fornisce l'input.
Questo metodo invia il CB_SETCUEBANNER
messaggio, descritto in Windows SDK.
Esempio
Il primo esempio di codice definisce la variabile , m_combobox
, usata per accedere a livello di codice al controllo casella combinata. Questa variabile viene usata nell'esempio riportato di seguito.
// Variable to access the combo box control
CComboBox m_combobox;
Nell'esempio di codice seguente viene impostato il banner segnale per il controllo casella combinata.
// Add extra initialization here.
// Add 20 items to the combo box. The Resource Editor
// has already been used to set the style of the combo
// box to CBS_SORT.
CString str;
for (int i = 1; i <= 20; i++)
{
str.Format(_T("Item %2d"), i);
m_combobox.AddString(str);
}
// Set the minimum visible item
m_combobox.SetMinVisibleItems(10);
// Set the cue banner
m_combobox.SetCueBanner(_T("Select an item..."));
// End of extra initialization.
CComboBox::SetCurSel
Seleziona una stringa nella casella di riepilogo di una casella combinata.
int SetCurSel(int nSelect);
Parametri
nSelect
Specifica l'indice in base zero della stringa da selezionare. Se -1, qualsiasi selezione corrente nella casella di riepilogo viene rimossa e il controllo di modifica viene cancellato.
Valore restituito
Indice in base zero dell'elemento selezionato se il messaggio ha esito positivo. Il valore restituito è CB_ERR
se nSelect
è maggiore del numero di elementi nell'elenco o se nSelect
è impostato su -1, che cancella la selezione.
Osservazioni:
Se necessario, la casella di riepilogo scorre la stringa nella visualizzazione (se la casella di riepilogo è visibile). Il testo nel controllo di modifica della casella combinata viene modificato in modo da riflettere la nuova selezione. Qualsiasi selezione precedente nella casella di riepilogo viene rimossa.
Esempio
// Select the last item in the combo box.
int nLast = pmyComboBox->GetCount() - 1;
if (nLast >= 0)
m_pComboBox->SetCurSel(nLast);
CComboBox::SetDroppedWidth
Chiamare questa funzione per impostare la larghezza minima consentita, in pixel, della casella di riepilogo di una casella combinata.
int SetDroppedWidth(UINT nWidth);
Parametri
nWidth
Larghezza minima consentita della parte casella di riepilogo della casella combinata, in pixel.
Valore restituito
In caso di esito positivo, la nuova larghezza della casella di riepilogo, in caso contrario CB_ERR
.
Osservazioni:
Questa funzione si applica solo alle caselle combinate con lo CBS_DROPDOWN
stile o CBS_DROPDOWNLIST
.
Per impostazione predefinita, la larghezza minima consentita della casella di riepilogo a discesa è 0. Quando viene visualizzata la parte casella di riepilogo della casella combinata, la larghezza è maggiore della larghezza minima consentita o della larghezza della casella combinata.
Esempio
// Find the longest string in the combo box.
CString str;
CSize sz;
int dx = 0;
TEXTMETRIC tm;
CDC *pDC = m_pComboBox->GetDC();
CFont *pFont = m_pComboBox->GetFont();
// Select the listbox font, save the old font
CFont *pOldFont = pDC->SelectObject(pFont);
// Get the text metrics for avg char width
pDC->GetTextMetrics(&tm);
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->GetLBText(i, str);
sz = pDC->GetTextExtent(str);
// Add the avg width to prevent clipping
sz.cx += tm.tmAveCharWidth;
if (sz.cx > dx)
dx = sz.cx;
}
// Select the old font back into the DC
pDC->SelectObject(pOldFont);
m_pComboBox->ReleaseDC(pDC);
// Adjust the width for the vertical scroll bar and the left and right border.
dx += ::GetSystemMetrics(SM_CXVSCROLL) + 2 * ::GetSystemMetrics(SM_CXEDGE);
// Set the width of the list box so that every item is completely visible.
m_pComboBox->SetDroppedWidth(dx);
CComboBox::SetEditSel
Seleziona i caratteri nel controllo di modifica di una casella combinata.
BOOL SetEditSel(
int nStartChar,
int nEndChar);
Parametri
nStartChar
Specifica la posizione iniziale. Se la posizione iniziale è impostata su -1, viene rimossa qualsiasi selezione esistente.
nEndChar
Specifica la posizione finale. Se la posizione finale è impostata su -1, viene selezionato tutto il testo dalla posizione iniziale all'ultimo carattere nel controllo di modifica.
Valore restituito
Diverso da zero se la funzione membro ha esito positivo; in caso contrario, 0. È CB_ERR
se CComboBox
ha lo CBS_DROPDOWNLIST
stile o non ha una casella di riepilogo.
Osservazioni:
Le posizioni sono in base zero. Per selezionare il primo carattere del controllo di modifica, specificare una posizione iniziale pari a 0. La posizione finale è relativa al carattere subito dopo l'ultimo carattere da selezionare. Ad esempio, per selezionare i primi quattro caratteri del controllo di modifica, usare una posizione iniziale pari a 0 e una posizione finale pari a 4.
Nota
Questa funzione non è supportata dal controllo Windows ComboBoxEx
. Per altre informazioni su questo controllo, vedere ComboBoxEx
Controlli in Windows SDK.
Esempio
Vedere l'esempio per CComboBox::GetEditSel
.
CComboBox::SetExtendedUI
Chiamare la SetExtendedUI
funzione membro per selezionare l'interfaccia utente predefinita o l'interfaccia utente estesa per una casella combinata con lo CBS_DROPDOWN
stile o CBS_DROPDOWNLIST
.
int SetExtendedUI(BOOL bExtended = TRUE);
Parametri
bExtended
Specifica se la casella combinata deve usare l'interfaccia utente estesa o l'interfaccia utente predefinita. Il valore TRUE
seleziona l'interfaccia utente estesa. Il valore FALSE
seleziona l'interfaccia utente standard.
Valore restituito
CB_OKAY
se l'operazione ha esito positivo o CB_ERR
se si verifica un errore.
Osservazioni:
L'interfaccia utente estesa può essere identificata nei modi seguenti:
Facendo clic sul controllo statico viene visualizzata la casella di riepilogo solo per le caselle combinate con lo
CBS_DROPDOWNLIST
stile.Premendo FRECCIA GIÙ viene visualizzata la casella di riepilogo (F4 è disabilitata).
Lo scorrimento nel controllo statico è disabilitato quando l'elenco di elementi non è visibile (i tasti di direzione sono disabilitati).
Esempio
Vedere l'esempio per CComboBox::GetExtendedUI
.
CComboBox::SetHorizontalExtent
Imposta la larghezza, in pixel, in base alla quale è possibile scorrere orizzontalmente la parte casella di riepilogo della casella combinata.
void SetHorizontalExtent(UINT nExtent);
Parametri
nExtent
Specifica il numero di pixel in base al quale è possibile scorrere orizzontalmente la parte casella di riepilogo della casella combinata.
Osservazioni:
Se la larghezza della casella di riepilogo è inferiore a questo valore, la barra di scorrimento orizzontale scorrerà orizzontalmente gli elementi nella casella di riepilogo. Se la larghezza della casella di riepilogo è uguale o maggiore di questo valore, la barra di scorrimento orizzontale è nascosta o, se la casella combinata ha lo CBS_DISABLENOSCROLL
stile, disabilitata.
Esempio
// Find the longest string in the combo box.
CString str;
CSize sz;
int dx = 0;
TEXTMETRIC tm;
CDC *pDC = m_pComboBox->GetDC();
CFont *pFont = m_pComboBox->GetFont();
// Select the listbox font, save the old font
CFont *pOldFont = pDC->SelectObject(pFont);
// Get the text metrics for avg char width
pDC->GetTextMetrics(&tm);
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->GetLBText(i, str);
sz = pDC->GetTextExtent(str);
// Add the avg width to prevent clipping
sz.cx += tm.tmAveCharWidth;
if (sz.cx > dx)
dx = sz.cx;
}
// Select the old font back into the DC
pDC->SelectObject(pOldFont);
m_pComboBox->ReleaseDC(pDC);
// Set the horizontal extent so every character of all strings can
// be scrolled to.
m_pComboBox->SetHorizontalExtent(dx);
CComboBox::SetItemData
Imposta il valore a 32 bit associato all'elemento specificato in una casella combinata.
int SetItemData(
int nIndex,
DWORD_PTR dwItemData);
Parametri
nIndex
Contiene un indice in base zero per l'elemento da impostare.
dwItemData
Contiene il nuovo valore da associare all'elemento.
Valore restituito
CB_ERR
se si verifica un errore.
Osservazioni:
Usare la SetItemDataPtr
funzione membro se l'elemento a 32 bit deve essere un puntatore.
Esempio
// Set the data of each item to be equal to its index.
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->SetItemData(i, i);
}
CComboBox::SetItemDataPtr
Imposta il valore a 32 bit associato all'elemento specificato in una casella combinata in modo che sia il puntatore specificato (void
*).
int SetItemDataPtr(
int nIndex,
void* pData);
Parametri
nIndex
Contiene un indice in base zero per l'elemento.
pData
Contiene il puntatore da associare all'elemento.
Valore restituito
CB_ERR
se si verifica un errore.
Osservazioni:
Questo puntatore rimane valido per la durata della casella combinata, anche se la posizione relativa dell'elemento all'interno della casella combinata potrebbe cambiare man mano che gli elementi vengono aggiunti o rimossi. Di conseguenza, l'indice dell'elemento all'interno della casella può cambiare, ma il puntatore rimane affidabile.
Esempio
// Set the data pointer of each item to be NULL.
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->SetItemDataPtr(i, NULL);
}
CComboBox::SetItemHeight
Chiamare la SetItemHeight
funzione membro per impostare l'altezza degli elementi dell'elenco in una casella combinata o l'altezza della parte di controllo di modifica (o testo statico) di una casella combinata.
int SetItemHeight(
int nIndex,
UINT cyItemHeight);
Parametri
nIndex
Specifica se l'altezza degli elementi dell'elenco o l'altezza della parte di controllo di modifica (o testo statico) della casella combinata è impostata.
Se la casella combinata ha lo CBS_OWNERDRAWVARIABLE
stile , nIndex
specifica l'indice in base zero dell'elemento di elenco la cui altezza deve essere impostata. In caso contrario, nIndex
deve essere 0 e verrà impostata l'altezza di tutti gli elementi dell'elenco.
Se nIndex
è -1, deve essere impostata l'altezza della parte edit-control o static-text della casella combinata.
cyItemHeight
Specifica l'altezza, in pixel, del componente casella combinata identificata da nIndex
.
Valore restituito
CB_ERR
se l'indice o l'altezza non è valida; in caso contrario, 0.
Osservazioni:
L'altezza della parte di controllo di modifica (o testo statico) della casella combinata viene impostata indipendentemente dall'altezza degli elementi dell'elenco. Un'applicazione deve assicurarsi che l'altezza della parte di controllo di modifica (o testo statico) non sia inferiore all'altezza di un determinato elemento della casella di riepilogo.
Esempio
// Set the height of every item to be the
// vertical size of the item's text extent.
CString str;
CSize sz;
CDC *pDC = m_pComboBox->GetDC();
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->GetLBText(i, str);
sz = pDC->GetTextExtent(str);
m_pComboBox->SetItemHeight(i, sz.cy);
}
m_pComboBox->ReleaseDC(pDC);
CComboBox::SetLocale
Imposta l'identificatore delle impostazioni locali per questa casella combinata.
LCID SetLocale(LCID nNewLocale);
Parametri
nNewLocale
Nuovo valore dell'identificatore delle impostazioni locali (LCID) da impostare per la casella combinata.
Valore restituito
Valore LCID (Locale Identifier) precedente per questa casella combinata.
Osservazioni:
Se SetLocale
non viene chiamato, le impostazioni locali predefinite vengono ottenute dal sistema. Le impostazioni locali predefinite del sistema possono essere modificate usando l'applicazione regionale (o internazionale) di Pannello di controllo.
Esempio
// My LCID to use.
LCID mylcid = MAKELCID(MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_MEXICAN),
SORT_DEFAULT);
// Force the list box to use my locale.
m_pComboBox->SetLocale(mylcid);
ASSERT(m_pComboBox->GetLocale() == mylcid);
CComboBox::SetMinVisibleItems
Imposta il numero minimo di elementi visibili nell'elenco a discesa del controllo casella combinata corrente.
BOOL SetMinVisibleItems(int iMinVisible);
Parametri
iMinVisible
[in] Specifica il numero minimo di elementi visibili.
Valore restituito
TRUE
se questo metodo ha esito positivo; in caso contrario, FALSE
.
Osservazioni:
Questo metodo invia il CB_SETMINVISIBLE
messaggio, descritto in Windows SDK.
Esempio
Il primo esempio di codice definisce la variabile , m_combobox
, usata per accedere a livello di codice al controllo casella combinata. Questa variabile viene usata nell'esempio riportato di seguito.
// Variable to access the combo box control
CComboBox m_combobox;
Nell'esempio di codice successivo vengono inseriti 20 elementi nell'elenco a discesa di un controllo casella combinata. Specifica quindi che vengono visualizzati almeno 10 elementi quando un utente preme la freccia a discesa.
// Add extra initialization here.
// Add 20 items to the combo box. The Resource Editor
// has already been used to set the style of the combo
// box to CBS_SORT.
CString str;
for (int i = 1; i <= 20; i++)
{
str.Format(_T("Item %2d"), i);
m_combobox.AddString(str);
}
// Set the minimum visible item
m_combobox.SetMinVisibleItems(10);
// Set the cue banner
m_combobox.SetCueBanner(_T("Select an item..."));
// End of extra initialization.
CComboBox::SetTopIndex
Assicura che un particolare elemento sia visibile nella parte casella di riepilogo della casella combinata.
int SetTopIndex(int nIndex);
Parametri
nIndex
Specifica l'indice in base zero dell'elemento della casella di riepilogo.
Valore restituito
Zero se ha esito positivo o CB_ERR
se si verifica un errore.
Osservazioni:
Il sistema scorre la casella di riepilogo fino a quando l'elemento specificato da nIndex
viene visualizzato nella parte superiore della casella di riepilogo o fino a raggiungere l'intervallo di scorrimento massimo.
Esempio
// Set the first visible item in the combo box to be the middle item
m_pComboBox->SetTopIndex(m_pComboBox->GetCount() / 2);
CComboBox::ShowDropDown
Visualizza o nasconde la casella di riepilogo di una casella combinata con lo CBS_DROPDOWN
stile o CBS_DROPDOWNLIST
.
void ShowDropDown(BOOL bShowIt = TRUE);
Parametri
bShowIt
Specifica se la casella di riepilogo a discesa deve essere visualizzata o nascosta. Il valore mostra la casella di TRUE
riepilogo. Il valore nasconde la casella di FALSE
riepilogo.
Osservazioni:
Per impostazione predefinita, una casella combinata di questo stile mostrerà la casella di riepilogo.
Questa funzione membro non ha alcun effetto su una casella combinata creata con lo CBS_SIMPLE
stile .
Esempio
Vedere l'esempio per CComboBox::GetDroppedState
.
Vedi anche
MFC Sample CTRLBARS
CWnd
Classe
Grafico della gerarchia
CWnd
Classe
CButton
Classe
CEdit
Classe
CListBox
Classe
CScrollBar
Classe
CStatic
Classe
CDialog
Classe