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

Vedere anche

Riferimenti

Classe di CListBox

Grafico della gerarchia

CListBox::VKeyToItem

CListBox::SetCurSel

CListBox::SetSel

CListBox::SetCaretIndex

WM_CHARTOITEM