Freigeben über


CListBox::CharToItem

Aufgerufen vom Framework, wenn das übergeordnete Fenster des Listenfelds eine WM_CHARTOITEM Meldung im Listenfeld empfängt.

virtual int CharToItem( 
   UINT nKey, 
   UINT nIndex  
);

Parameter

  • nKey
    Der ANSI-Code des Zeichens, das der Benutzer eingab.

  • nIndex
    Die aktuelle Position der Listenfeldeinfügemarke.

Rückgabewert

Gibt 1 - oder 2, damit keine weitere Aktion oder eine nicht negative Zahl einen Index auf dem eines Listenfeldelements angibt, um die Standardaktion für die Tastatureingabe auszuführen. Die Standardimplementierung gibt zurück - 1.

Hinweise

Die WM_CHARTOITEM Meldung wird vom Listenfeld gesendet, wenn sie eine WM_CHAR Nachricht empfängt, sondern wenn das Listenfeld alle diese Kriterien erfüllt:

  • Der ist ein Ownerdrawn Listenfeld.

  • Ermöglicht das LBS_HASSTRINGS Format nicht festlegen.

  • Verfügt über mindestens ein Element.

Sie sollten diese Funktion nie aufrufen. Überschreiben Sie diese Funktion, um eine eigene benutzerdefinierte Behandlung von Tastaturmeldungen bereitzustellen.

In der Überschreibung müssen Sie einen Wert zurückgeben, um dem Framework mitzuteilen, welche Aktion Sie ausgeführt haben. Ein Rückgabewert von 1 oder 2 gibt an, dass Sie alle Aspekte der Auswahl des Elements behandelt und keine weitere Aktion durch das Listenfeld benötigen. Bevor Sie - 1 oder 2 zurückgaben, könnten Sie die Auswahl festlegen oder die Einfügemarke oder beide verschieben. Um die Auswahl, die Verwendung SetCurSel oder SetSel festlegen. Um die Einfügemarke zu verschieben, verwenden Sie SetCaretIndex.

Ein Rückgabewert 0 oder ein größeres gibt den Index eines Elements im Listenfeld auf und gibt an, dass das Listenfeld die Standardaktion für die Tastatureingabe auf dem angegebenen Element ausführen soll.

Beispiel

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

Anforderungen

Header: afxwin.h

Siehe auch

Referenz

CListBox-Klasse

Hierarchiediagramm

CListBox::VKeyToItem

CListBox::SetCurSel

CListBox::SetSel

CListBox::SetCaretIndex

WM_CHARTOITEM