CListBox::CharToItem
Chiamato dal framework quando la finestra padre della casella di riepilogo riceve un messaggio WM_CHARTOITEM dalla casella di riepilogo.
virtual int CharToItem(
UINT nKey,
UINT nIndex
);
Parametri
nKey
Il codice ANSI con caratteri immessi dall'utente.nIndex
La posizione corrente del cursore nella casella di riepilogo.
Valore restituito
Restituisce 1 – oppure – 2 per richieste altre azione o un numero non negativo di specificare un indice di un elemento della casella di riepilogo in cui eseguire l'azione predefinita per la sequenza di tasti.L'implementazione predefinita restituisce – 1.
Note
Il messaggio WM_CHARTOITEM viene inviato dalla casella di riepilogo quando riceve un messaggio WM_CHAR, ma solo se la casella di riepilogo soddisfa tutti i criteri:
È una casella di riepilogo Owner Draw.
Non lo stile LBS_HASSTRINGS impostare.
Dispone almeno un elemento.
È consigliabile chiamare mai questa funzione manualmente.Eseguire l'override di questa funzione per fornire la gestione personalizzata dei messaggi della tastiera.
Nell'override, è necessario restituire un valore per indicare al framework di azione è stata eseguita.Un valore restituito (1 o uguale a 2 indica che è stato gestito tutti gli aspetti di selezionare l'elemento e non richiede l'esecuzione di altre azioni dalla casella di riepilogo.Prima di restituire 1 – oppure – 2, è possibile impostare la selezione o spostare il cursore o entrambi.Per impostare la selezione, l'utilizzo SetCurSel o SetSel.Spostare il cursore, utilizzare SetCaretIndex.
Un valore restituito di 0 o maggiore specifica un indice di un elemento della casella di riepilogo e indica che nella casella di riepilogo deve eseguire l'azione predefinita per la sequenza di tasti sull'elemento specificato.
Esempio
// CMyODListBox is my owner-drawn list box derived from CListBox. This
// example moves the caret down one item on a numeric key and up one item
// on an alphabetic key. The list box control was created with the
// following code:
// m_myODListBox.Create(
// WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
// LBS_SORT|LBS_MULTIPLESEL|LBS_OWNERDRAWVARIABLE|LBS_WANTKEYBOARDINPUT,
// CRect(10,250,200,450), pParentWnd, IDC_MYODLISTBOX);
//
int CMyODListBox::CharToItem(UINT nChar, UINT nIndex)
{
// On a numeric key, move the caret up one item.
if (isdigit(nChar) && (nIndex > 0))
{
SetCaretIndex(nIndex-1);
}
// On an alphabetic key, move the caret down one item.
else if (isalpha(nChar) && (nIndex < (UINT)GetCount()))
{
SetCaretIndex(nIndex+1);
}
// Do not perform any default processing.
return -1;
}
Requisiti
Header: afxwin.h