Sdílet prostřednictvím


CListBox::CharToItem

Volat v rámci nadřazené okno seznamu obdrží WM_CHARTOITEM zprávy ze seznamu.

virtual int CharToItem( 
   UINT nKey, 
   UINT nIndex  
);

Parametry

  • nKey
    ANSI kód znaku zadaného uživatele.

  • nIndex
    Aktuální pozice pole seznamu stříška.

Vrácená hodnota

Vrátí-1 nebo – 2 žádná další akce nebo nezáporné číslo zadat index pole seznamu položky, ve kterém chcete provést výchozí akci pro stisku klávesy.Výchozí implementace vrátí – 1.

Poznámky

WM_CHARTOITEM Odeslána prostřednictvím seznamu po obdržení WM_CHAR zprávy, ale pouze pokud seznamu splňuje všechna tato kritéria:

  • Je seznamu překreslování.

  • Nemá LBS_HASSTRINGS sadu stylů.

  • Má alespoň jednu položku.

By nikdy volání této funkce sami.Přepsat této funkce můžete poskytnout vlastní vlastní zpracování zpráv klávesnice.

Ve své přepsání musí vracet hodnotu rámci zjistit, jaká opatření byla provedena.Vrácená hodnota – 1 nebo – 2 označuje, že zpracování všech aspektů výběrem položky a vyžaduje žádná další akce v seznamu.Před vrácením – 1 nebo – 2, můžete nastavit výběr nebo přesunout stříška nebo obojí.Výběr pomocí SetCurSel nebo SetSel.Přesunout stříška, použijte SetCaretIndex.

Vrácená hodnota 0 nebo větší Určuje index položky v seznamu a označuje, že seznamu by měl provést výchozí akci pro stisknutí klávesnice na danou položku.

Příklad

// 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;
}

Požadavky

Záhlaví: afxwin.h

Viz také

Referenční dokumentace

Třída CListBox

Graf hierarchie

CListBox::VKeyToItem

CListBox::SetCurSel

CListBox::SetSel

CListBox::SetCaretIndex

WM_CHARTOITEM