次の方法で共有


CListBox::CharToItem

リスト ボックスの親ウィンドウがリスト ボックスから WM_CHARTOITEM のメッセージを受信したときに、フレームワークによって呼び出されます。

virtual int CharToItem(
   UINT nKey,
   UINT nIndex 
);

パラメーター

  • nKey
    ユーザーが入力した文字 ANSI コード。

  • nIndex
    リスト ボックスで現在のキャレット位置。

戻り値

は– 1 または–キーストロークの既定のアクションを実行するリスト ボックスの項目のインデックスを指定します。それ以上の処理は行われませんまたは負の数値の場合は 2。既定の実装では– 1。

解説

WM_CHARTOITEM のメッセージは、リスト ボックスによって WM_CHAR のメッセージを受信する場合にのみ、リスト ボックスがこれらのすべての条件を満たす送信:

  • オーナー描画リスト ボックスはです。

  • LBS_HASSTRINGS のスタイルを設定されていません。

  • 1 文字以上の項目が含まれています。

独自、この関数を呼び出す必要ではありません。キーボード メッセージの独自のカスタム処理を行う場合は、この関数をオーバーライドします。

は、オーバーライド関数では、アクションを実行したか、フレームワークに通知するために値を返す必要があります。– 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