다음을 통해 공유


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

참고 항목

참조

Clistbox 클래스 클래스

계층 구조 차트

CListBox::VKeyToItem

CListBox::SetCurSel

CListBox::SetSel

CListBox::SetCaretIndex

WM_CHARTOITEM