Partilhar via


CListBox::CharToItem

Chamado pela estrutura quando a janela pai da caixa de lista receber uma mensagem de WM_CHARTOITEM da caixa de listagem.

virtual int CharToItem(
   UINT nKey,
   UINT nIndex 
);

Parâmetros

  • nKey
    O código ANSI de caracteres que o usuário digitou.

  • nIndex
    A atual posição caret da caixa de listagem.

Valor de retorno

Retorna 1 – ou – 2 para que nenhuma ação adicional ou um número não-negativos um especifica o índice de um item da caixa de listagem para executar a ação padrão para o pressionamento de tecla.O retorna padrão de implementação – 1.

Comentários

A mensagem de WM_CHARTOITEM é enviada pela caixa de listagem quando receber uma mensagem de WM_CHAR , mas somente se a caixa de listagem enumerar todos esses critérios:

  • É uma caixa de lista do proprietário.

  • Não tem o estilo de LBS_HASSTRINGS 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.

Em sua substituição, você deve retornar um valor para informar a estrutura que você executou ação.Um valor de retorno 1 – ou – 2 indica que você tratou todos os aspectos de selecione o item e não requer nenhuma ação adicional pela caixa de listagem.Antes de retornar 1 – ou – 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 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 a numeric key and up one item 
// on an alphabetic 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::CharToItem(UINT nChar, UINT nIndex)
{
   // On a numeric key, move the caret up one item.
   if (isdigit(nChar) && (nIndex > 0))
   {
      SetCaretIndex(nIndex-1);
   }
   // On an alphabetic key, move the caret down one item.
   else if (isalpha(nChar) && (nIndex < (UINT)GetCount()))
   {
      SetCaretIndex(nIndex+1);
   }

   // Do not perform any default processing.
   return -1;
}

Requisitos

Cabeçalho: afxwin.h

Consulte também

Referência

Classe de CListBox

Gráfico de hierarquia

CListBox::VKeyToItem

CListBox::SetCurSel

CListBox::SetSel

CListBox::SetCaretIndex

WM_CHARTOITEM