CListBox::VKeyToItem
Chamado pela estrutura quando a janela pai da caixa de lista receber uma mensagem de WM_VKEYTOITEM da caixa de listagem.
virtual int VKeyToItem(
UINT nKey,
UINT nIndex
);
Parâmetros
nKey
O código da tecla virtual de chave que o usuário pressionou.Para uma listagem de código chave virtuais padrão, consulte Winuser.hnIndex
A atual posição caret da caixa de listagem.
Valor de retorno
Retorna – 2 para nenhuma ação adicional, – 1 para a ação default, ou um número não-negativos um especificando o índice de um item da caixa de listagem para executar a ação padrão para o pressionamento de tecla.
Comentários
A mensagem de WM_VKEYTOITEM é enviada pela caixa de listagem quando receber uma mensagem de WM_KEYDOWN , mas somente se a caixa de listagem encontra ambos o seguinte:
Tem o estilo de LBS_WANTKEYBOARDINPUT definido.
Tem pelo menos um item.
Você nunca deve chamar essa função você mesmo.Substituir essa função para fornecer seu próprio tratamento personalizado de mensagens do teclado.
Você deve retornar um valor para informar a estrutura que ação sua sobrescrita executar.Um valor de retorno de – 2 indica que o aplicativo como todos os aspectos de selecione o item e não requer nenhuma ação adicional pela caixa de listagem.Antes de retornar – 2, você pode definir a seleção ou mover o acento circunflexo ou ambos.Para definir a seleção, o uso SetCurSel ou o SetSel.Para mover o acento circunflexo, use SetCaretIndex.
Um valor de retorno de – 1 indica que a caixa de listagem deve executar a ação padrão em resposta ao pressionamento de tecla. O retorna padrão de implementação – 1.
Um valor de retorno de 0 ou maior especifica o índice de um item na caixa de listagem e indicam que a caixa de listagem deve executar a ação default para o pressionamento de teclas no item especificado.
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