CListBox::CharToItem
부모 창에서 목록 상자를 받았을 때 프레임 워크에 의해 호출 된 WM_CHARTOITEM 메시지 목록 상자에서.
virtual int CharToItem(
UINT nKey,
UINT nIndex
);
매개 변수
nKey
문자를 사용자의 ANSI 코드를 입력 합니다.nIndex
목록 상자 캐럿의 현재 위치입니다.
반환 값
반환-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;
}
요구 사항
헤더: afxwin.h