次の方法で共有


CListBox::VKeyToItem

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

virtual int VKeyToItem(
   UINT nKey,
   UINT nIndex 
);

パラメーター

  • nKey
    ユーザーが Enter キーの仮想キー コード。標準の仮想キー コードのの一覧については、Winuser.h を参照してください。

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

戻り値

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

解説

WM_VKEYTOITEM のメッセージは、リスト ボックスによって WM_KEYDOWN のメッセージを受信する場合にのみ、リスト ボックスが次の両方に達したときに送信されます:

  • LBS_WANTKEYBOARDINPUT のスタイルを設定されている。

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

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

アクションを実行したか、のオーバーライドがフレームワークに通知するために値を返す必要があります。戻り値の–アプリケーションは項目の選択のすべての要素を処理し、リスト ボックスによって、対処は不要と、2 つが。– 2 が返される前のオプションを設定またはキャレットまたは両方を実行できます。選択、使用 SetCurSel または SetSelを設定します。キャレットを実行するには、SetCaretIndexを使用します。

–戻り値のリスト ボックスがキーストロークに応じて既定のアクションを実行する必要があることを示します。1 は既定の実装では– 1。

0 の戻り値はリスト ボックスの項目のインデックスを指定し、リスト ボックスの項目が特定のキーストロークの既定のアクションを実行することを示します。

使用例

// CMyODListBox is my owner-drawn list box derived from CListBox. This 
// example moves the caret down one item on the down key and up one item 
// on the up 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::VKeyToItem(UINT nKey, UINT nIndex)
{
   // On key up, move the caret up one item.
   if ((nKey == VK_UP) && (nIndex > 0))
   {
      SetCaretIndex(nIndex-1);
   }
   // On key down, move the caret down one item.
   else if ((nKey == VK_DOWN) && (nIndex < (UINT)GetCount()))
   {
      SetCaretIndex(nIndex+1);
   }

   // Do not perform any default processing.
   return -2;
}

必要条件

ヘッダー: afxwin.h

参照

関連項目

CListBox クラス

階層図

CListBox::CharToItem

CListBox::SetCurSel

CListBox::SetSel

CListBox::SetCaretIndex