CListBox::VKeyToItem
Chiamato dal framework quando la finestra padre della casella di riepilogo riceve un messaggio WM_VKEYTOITEM dalla casella di riepilogo.
virtual int VKeyToItem(
UINT nKey,
UINT nIndex
);
Parametri
nKey
Il codice tasto virtuale chiave che l'utente ha raggiunto. Per un elenco dei codici tasto virtuali standard, vedere Winuser.hnIndex
La posizione corrente del cursore nella casella di riepilogo.
Valore restituito
Restituisce e 2 per richieste altre azioni, – 1 per l'azione predefinita, o un numero non negativo specificare un indice di un elemento della casella di riepilogo in cui eseguire l'azione predefinita per la sequenza di tasti.
Note
Il messaggio WM_VKEYTOITEM viene inviato dalla casella di riepilogo quando riceve un messaggio WM_KEYDOWN, ma solo se la casella di riepilogo soddisfa entrambe le operazioni seguenti:
Lo stile LBS_WANTKEYBOARDINPUT 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.
È necessario restituire un valore per indicare al framework di azione l'override ha eseguito. Restituito un valore pari a 2 indica che l'applicazione ha gestito tutti gli aspetti di selezionare l'elemento e non richiedono l'esecuzione di altre azioni dalla casella di riepilogo. Prima di restituire – 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.
Restituito un valore pari a 1 indica che la casella di riepilogo deve eseguire l'azione predefinita in risposta alla sequenza di tasti. L'implementazione predefinita restituisce – 1.
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 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;
}
Requisiti
Header: afxwin.h