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;
}
要求
Header: afxwin.h