Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal _ hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _ lParam As Any) As LongPrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As _ Any, dest As Any, ByVal numBytes As Long)Const LB_ITEMFROMPOINT = &H1A9' Return the index of a ListBox item at given coordinates' X and Y are in pixels and relative to the ListBox's upperleft corner' ' This is similar to the HitTest method of the ListView control'' Here an example that shows the index of the item under the cursor' Private Sub List1_MouseMove(Button As Integer, Shift As Integer,' ' X As Single, Y As Single)' Label1 = ListBoxItemFromPoint(List1, ' ScaleX(X, vbTwips, vbPixels),' ScaleY(Y, vbTwips, vbPixels))' End SubFunction ListBoxItemFromPoint(lb As ListBox, ByVal X As Long, _ ByVal Y As Long) As Long Dim lParam As Long ' lParam must contain X in its low-order word ' and Y in its high-order word. ' filling the low-order word is easy lParam = X ' We need this method to avoid overflow. CopyMemory ByVal VarPtr(lParam) + 2, Y, 2 ListBoxItemFromPoint = SendMessage(lb.hwnd, LB_ITEMFROMPOINT, 0, _ ByVal lParam)End Function


The Best Mechanical Keyboards For Programmers: Where To Find Them
When it comes to programming, a good mechanical keyboard can make all the difference. Naturally, you would want one of the best mechanical keyboards for programmers. But with so many