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