Поделиться через


CListBox::CharToItem

Вызываемый платформой, если родительское окно списка получает сообщение WM_CHARTOITEM из списка.

virtual int CharToItem( 
   UINT nKey, 
   UINT nIndex  
);

Параметры

  • nKey
    Код знака ANSI пользователя типизированные.

  • nIndex
    Текущее положение курсора списка.

Возвращаемое значение

Return – 1 или 2, чтобы анимация не более добавочной действия или неотрицательное число указать индекс элемента списка в котором выполняется действие по умолчанию для нажатия клавиш. Возвращают реализацию по умолчанию – 1.

Заметки

Сообщение WM_CHARTOITEM отправлено списком при получении сообщения WM_CHAR, но только в том случае, если список встречает все эти условия:

  • Список рисования владельцем.

  • Не имеет стиль LBS_HASSTRINGS быть задано.

  • Имеет по крайней мере один элемент.

Ее никогда не должны вызывать эту функцию. Переопределить эту функцию для предоставления собственный пользовательский обработки сообщений клавиатуры.

В переопределенном методе необходимо вернуть значение, чтобы сообщить рамкам, какое действие запуске. Возвращаемое значение 1 или 2 указывает на то, что отрегулировали все аспекты выбрать элемент и не требует более добавочной действия списком. Перед возвратом – 1 или 2, можно задать выделение или перемещения курсора или оба. Выделение, задать использование SetCurSel или SetSel. Для перемещения курсора, используйте SetCaretIndex.

Возвращаемое значение 0 или больше задают индекс элемента в списке и указывает на то, что список должен выполнить действие по умолчанию для нажатия клавиши на заданном элементе.

Пример

// 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;
}

Требования

Header: afxwin.h

См. также

Ссылки

Класс CListBox

Диаграмма иерархии

CListBox::VKeyToItem

CListBox::SetCurSel

CListBox::SetSel

CListBox::SetCaretIndex

WM_CHARTOITEM