Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
virtual int VKeyToItem( UINT nKey**, UINT** nIndex );
Return Value
Returns – 2 for no further action, – 1 for default action, or a nonnegative number to specify an index of a list box item on which to perform the default action for the keystroke.
Parameters
nKey
The virtual-key code of the key the user pressed.
nIndex
The current position of the list-box caret.
Remarks
This function is called by the framework when the list box’s parent window receives a WM_VKEYTOITEM message from the list box. The WM_VKEYTOITEM message is sent by the list box when it receives a WM_KEYDOWN message, but only if the list box meets both of the following:
Has the LBS_WANTKEYBOARDINPUT style set.
Has at least one item.
You should never call this function yourself. Override this function to provide your own custom handling of keyboard messages.
You must return a value to tell the framework what action your override performed. A return value of – 2 indicates that the application handled all aspects of selecting the item and requires no further action by the list box. Before returning – 2, you could set the selection or move the caret or both. To set the selection, use SetCurSel or SetSel. To move the caret, use SetCaretIndex.
A return value of – 1 indicates that the list box should perform the default action in response to the keystroke.The default implementation returns – 1.
A return value of 0 or greater specifies the index of an item in the list box and indicates that the list box should perform the default action for the keystroke on the given item.
Example
// CMyListBox 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:
// pmyListBox->Create(
// WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
// LBS_SORT|LBS_MULTIPLESEL|LBS_OWNERDRAWVARIABLE|LBS_WANTKEYBOARDINPUT,
// CRect(10,10,200,200), pParentWnd, 1);
//
int CMyListBox::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 < GetCount()))
SetCaretIndex(nIndex+1);
// Do not perform any default processing.
return -2;
}
CListBox Overview | Class Members | Hierarchy Chart
See Also CListBox::CharToItem, CListBox::SetCurSel, CListBox::SetSel, CListBox::SetCaretIndex