Шаг 952 - CListBox::VKeyToItem

virtual int VKeyToItem( UINT nKey, UINT nIndex );

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

Параметры
nKey
Код с виртуальной клавишей клавиши которую пользователь нажал.
nIndex
Текущая позиция символа каретки списка.

Замечания
Эта функция вызвана рамкой, когда блок списка родительского окно получает WM_VKEYTOITEM сообщение от списка. WM_VKEYTOITEM сообщение послано списком, когда он получает WM_KEYDOWN сообщение, но только, если список встречает оба из следующего:

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

Вы никогда не должны вызвать эту функцию самостоятельно. Перегрузите эту функцию, чтобы обеспечить вашу собственную заказную обработку сообщений клавиатуры.
Вы должны возвратить значение, чтобы сообщить рамке какой действие нужно возвращаеть. Возвращаемое значение - 2 указывает, что прикладная программа обработала все аспекты выбора элемента и не требует никакого дальнейшего действия списком. Перед возвратом - 2, Вы могли бы устанавливать выбор или перемещать символ каретки или оба. Чтобы устанавливать выбор, используйте SetCurSel или SetSel. Чтобы перемещать символ каретки, используйте SetCaretIndex.
Возвращаемое значение - 1 указывает, что список должен выполнить заданное по умолчанию действие в ответ на нажатие клавиши. Заданные по умолчанию возвраты реализации - 1.
Возвращаемое значение 0 или больший определяет индекс элемента в списке и указывает, что список должен выполнить заданное по умолчанию действие для нажатия клавиши на данном элементе.

Пример

// CMyListBox - мой выведенный владельцем список, полученный из CListBox. Этот
// пример перемещает символ каретки вниз один элемент при нажатии вних и вверх
// один элемент при нажатии вверх. Управление списка было создано с следующим
// Код:
//   pmyListBox->Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      LBS_SORT|LBS_MULTIPLESEL|LBS_OWNERDRAWVARIABLE|LBS_WANTKEYBOARDINPUT,
//      CRect(10,10,200,200), pParentWnd, 1);
//
int CMyListBox::VKeyToItem(UINT nKey, UINT nIndex) 
{
	// По клавише вверх, переместите символ каретки на один элемент вверх.
	if ((nKey == VK_UP) && (nIndex > 0))
		SetCaretIndex(nIndex-1);

	// По клавиши вниз, переместите символ каретки вниз на один элемент.
	else if ((nKey == VK_DOWN) && (nIndex < GetCount()))
		SetCaretIndex(nIndex+1);
   
	// Не выполните никакую заданную по умолчанию обработку.
	return -2;
}

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 12.02.2002