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