CListBox::VKeyToItem
Chamada pela estrutura quando o lista pai janela da caixa recebe um WM_VKEYTOITEM mensagem do lista caixa.
virtual int VKeyToItem(
UINT nKey,
UINT nIndex
);
Parâmetros
nKey
O código de tecla virtual da chave que o usuário pressionou.Para obter uma lista de códigos de chave virtual padrão, consulte WinUser.hnIndex
A posição corrente do lista-caixa cursor.
Valor de retorno
Retorna – 2 para nenhuma outra ação, – 1 para a ação padrão ou um número não negativo para especificar um índice de um lista item de caixa na qual deseja executar a ação padrão para o pressionamento de tecla.
Comentários
The WM_VKEYTOITEM mensagem é enviada com o lista caixa quando ele recebe um WM_KEYDOWN mensagem, mas apenas se o lista caixa atende a ambos os procedimentos a seguir:
Tem o LBS_WANTKEYBOARDINPUT estilo conjunto.
Tem pelo menos um item.
Nunca devem telefonar isso funcionar por conta própria.Substitua esta função para fornecer sua própria manipulação personalizada das mensagens de teclado.
Você deve retornar um valor para informar a estrutura que ação sua substituir realizada.Um valor retornado de – 2 indica que o aplicativo tratados todos os aspectos de selecionando o item e não requer mais nenhuma ação na caixa da lista.Retornando antes – 2, você pode conjunto a seleção ou mover o cursor ou ambos.Para conjunto a seleção, use SetCurSel or SetSel.Para mover o cursor, use SetCaretIndex.
Um valor retornado de – 1 indica que o lista caixa deve executar a ação padrão em resposta ao keystroke.The padrão implementação retorna – 1.
Um valor de 0 ou maior retorno Especifica o índice de um item na lista caixa e indica que o lista caixa deve executar a ação padrão para o pressionamento de tecla no item específico.
Exemplo
// 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
Cabeçalho: afxwin.h