Partager via


CListBox::CharToItem

Appelé par l'infrastructure lorsque la fenêtre parente de la zone de liste reçoit un message d' WM_CHARTOITEM de la zone de liste.

virtual int CharToItem( 
   UINT nKey, 
   UINT nIndex  
);

Paramètres

  • nKey
    Le code ANSI de caractères que l'utilisateur a entré.

  • nIndex
    La position actuelle du signe insertion de zone de liste.

Valeur de retour

Retourne 1 – ou – 2 pour qu'aucune autre action ou un nombre non négatif spécifie un index d'un élément de zone de liste sur lequel exécuter l'action par défaut de la séquence de touches. Retourne par défaut d'implémentation – 1.

Notes

Le message d' WM_CHARTOITEM est envoyé par la zone de liste lorsqu'il reçoit un message d' WM_CHAR , mais uniquement si la zone de liste exécute tous ces critères :

  • Est une zone de liste owner-draw.

  • N'est pas définir le style de LBS_HASSTRINGS .

  • Possède au moins un élément.

Vous ne devez jamais appeler cette fonction vous-même. Remplacez cette fonction pour fournir votre propre gestion personnalisée des messages de clavier.

Dans la substitution, vous devez retourner une valeur pour indiquer à l'infrastructure quelle action vous avez effectuée. Une valeur de retour (– 1 ou de 2 indique que vous avez traité tous les aspects de sélectionner l'élément et n'avez besoin d'aucune autre action par la zone de liste. Avant de retourner 1 – ou – 2, vous pouvez définir la sélection ou déplacer le signe insertion ou les deux. Pour définir la sélection, l'utilisation SetCurSel ou le SetSel. Pour déplacer le signe insertion, utilisez SetCaretIndex.

Une valeur de retour de 0 ou un meilleur spécifie l'index d'un élément dans la zone de liste et l'indique que la zone de liste doit exécuter l'action par défaut de la séquence de touches sur l'élément donné.

Exemple

// 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;
}

Configuration requise

Header: afxwin.h

Voir aussi

Référence

CListBox, classe

Graphique de la hiérarchie

CListBox::VKeyToItem

CListBox::SetCurSel

CListBox::SetSel

CListBox::SetCaretIndex

WM_CHARTOITEM