CListBox::VKeyToItem
Aufgerufen vom Framework, wenn das übergeordnete Fenster des Listenfelds eine WM_VKEYTOITEM Meldung im Listenfeld empfängt.
virtual int VKeyToItem(
UINT nKey,
UINT nIndex
);
Parameter
nKey
Der virtuelle Tastencode der Schlüssel, die der Benutzer geklickt hat. Eine Liste der Standardvirtuellen tastencodes, finden Sie Winuser.hnIndex
Die aktuelle Position der Listenfeldeinfügemarke.
Rückgabewert
Gibt 2 für - keine weitere Aktion, - 1 für Standardaktion zurück, oder eine nicht negative Zahl, einen Index eines Listenfeldelements anzugeben, auf dem die Standardaktion für die Tastatureingabe ausführen.
Hinweise
Die WM_VKEYTOITEM Meldung wird vom Listenfeld gesendet, wenn sie eine WM_KEYDOWN Nachricht empfängt, sondern wenn das Listenfeld beide der folgenden entspricht:
Ermöglicht das LBS_WANTKEYBOARDINPUT Format 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.
Sie müssen einen Wert zurückgeben, um dem Framework mitzuteilen, welche Aktion die Überschreibung ausführen. Ein Rückgabewert von 2 gibt an, dass die Anwendung alle Aspekte der Auswahl des Elements behandelt und keine weitere Aktion durch das Listenfeld erfordert. vor dem Zurückgeben - 2, können 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 von 1 gibt an, dass das Listenfeld die Standardaktion als Reaktion auf die Tastatureingabe ausführen soll. Die Standardimplementierung gibt zurück - 1.
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 the down key and up one item
// on the up 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::VKeyToItem(UINT nKey, UINT nIndex)
{
// On key up, move the caret up one item.
if ((nKey == VK_UP) && (nIndex > 0))
{
SetCaretIndex(nIndex-1);
}
// On key down, move the caret down one item.
else if ((nKey == VK_DOWN) && (nIndex < (UINT)GetCount()))
{
SetCaretIndex(nIndex+1);
}
// Do not perform any default processing.
return -2;
}
Anforderungen
Header: afxwin.h