+ if ( m_selectedByKeyboard )
+ {
+ // We shouldn't use the mouse position to find the item as mouse
+ // can be anywhere, ask the listbox itself. Notice that this can't
+ // be used when the item is selected using the mouse however as
+ // LB_GETCARETINDEX will always return a valid item, even if the
+ // mouse is clicked below all the items, which is why we find the
+ // item ourselves below in this case.
+ n = SendMessage(GetHwnd(), LB_GETCARETINDEX, 0, 0);
+ }
+ //else: n will be determined below from the mouse position