CListBox::VKeyToItem
调用由结构,当列表框的父窗口接收从列表框中 WM_VKEYTOITEM 消息。
virtual int VKeyToItem(
UINT nKey,
UINT nIndex
);
参数
nKey
用户按键的虚键控代码。有关标准虚键控代码清单,请参见Winuser.hnIndex
列表框插入符号的当前位置。
返回值
返回– 2没有进一步操作中,– 1的默认事件的或非负数字指定执行键击的默认事件列表框项的索引。
备注
列表框发送 WM_VKEYTOITEM 信息,在收到消息时,WM_KEYDOWN,不过,只有当列表框满足这两项操作:
将 LBS_WANTKEYBOARDINPUT 样式设置。
至少有一个项。
您不应调用此函数。重写此函数提供了自定义处理键盘消息。
您必须返回值调用框架的操作重写中执行了。返回值– 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;
}
要求
Header: afxwin.h