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