CListBox::VKeyToItem
Вызываемый платформой, если родительское окно списка получает сообщение WM_VKEYTOITEM из списка.
virtual int VKeyToItem(
UINT nKey,
UINT nIndex
);
Параметры
nKey
Виртуальный пользователь отжал код клавиши ключа.Список стандартных виртуальных кодов клавиш см. в разделе Winuser.hnIndex
Текущее положение курсора списка.
Возвращаемое значение
Возвращает – не более 2 для добавочной действия – 1 для действия по умолчанию или неотрицательное число указать индекс элемента списка в котором выполняется действие по умолчанию для нажатия клавиш.
Заметки
Сообщение WM_VKEYTOITEM отправлено списком при получении сообщения WM_KEYDOWN, но только в том случае, если список встречает оба из следующих действий.
Имеет стиль LBS_WANTKEYBOARDINPUT быть задано.
Имеет по крайней мере один элемент.
Ее никогда не должны вызывать эту функцию.Переопределить эту функцию для предоставления собственный пользовательский обработки сообщений клавиатуры.
Необходимо возвратить значение, чтобы сообщить рамкам, какое действие для переопределения.Возвращаемое значение – 2 указывает на то, что приложение отрегулировало все аспекты выбрать элемент и не требуют никакого более добавочной действия списком.Перед возвратом – 2, можно задать выделение или перемещения курсора или оба.Выделение, задать использование SetCurSel или SetSel.Для перемещения курсора, используйте SetCaretIndex.
Возвращаемое значение – 1, указывает на то, что список должен выполнить действие по умолчанию в ответ на нажатие клавиши. Возвращают реализацию по умолчанию – 1.
Возвращаемое значение 0 или больше задают индекс элемента в списке и указывает на то, что список должен выполнить действие по умолчанию для нажатия клавиши на заданном элементе.
Пример
// 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;
}
Требования
Header: afxwin.h