CListBox::VKeyToItem
Llamado por el marco cuando la ventana primaria del cuadro de lista recibe un mensaje de WM_VKEYTOITEM listbox.
virtual int VKeyToItem(
UINT nKey,
UINT nIndex
);
Parámetros
nKey
El código de tecla virtual de la clave del usuario presionó. Para obtener una lista de códigos de tecla virtual estándar, vea Winuser.hnIndex
La posición actual del símbolo de intercalación en el cuadro de lista.
Valor devuelto
Devuelve – 2 para cualquier otra acción, – 1 para la acción predeterminada, o un número negativo para especificar un índice de un elemento del cuadro de lista en el que realizar la acción predeterminada para la presión de tecla.
Comentarios
El mensaje de WM_VKEYTOITEM es enviado por el cuadro de lista cuando recibe un mensaje de WM_KEYDOWN , pero solo si el cuadro de lista cumple ambos siguiente:
Hace que el estilo de LBS_WANTKEYBOARDINPUT establecer.
Tiene al menos un elemento.
Nunca debe llamar a esta función personalmente. Invalide esta función para proporcionar dispone de control personalizado de los mensajes del teclado.
Debe devolver un valor para indicar al marco qué acción realizó la invalidación. Un valor devuelto de – 2 indica que la aplicación ha todos los aspectos de seleccionar el elemento y no requiere ninguna acción por el cuadro de lista. Antes de cambiar – 2, podría establecer la selección o mover el símbolo de intercalación o ambos. para establecer la selección, el uso SetCurSel o SetSel. para mover el símbolo de intercalación, utilice SetCaretIndex.
Un valor devuelto de – 1 indica que el cuadro de lista debe realizar la acción predeterminada en respuesta a la presión de tecla. Retornos de implementación predeterminada – 1.
Devuelve un valor de 0 o mayor especifica el índice de un elemento en el cuadro de lista e indica que el cuadro de lista debe realizar la acción predeterminada para la presión de tecla en el elemento especificado.
Ejemplo
// 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;
}
Requisitos
encabezado: afxwin.h