Type | Description | |||
X as OLE_XPOS_PIXELS | A single that specifies the current X location of the mouse pointer. The x values is always expressed in client coordinates. | |||
Y as OLE_YPOS_PIXELS | A single that specifies the current Y location of the mouse pointer. The y values is always expressed in client coordinates. | |||
ColIndex as Long | A long expression that indicates on return, the column where the point belongs. | |||
HitTestInfo as HitTestInfoEnum | A HitTestInfoEnum expression that determines on return the position of the cursor within the cell. | |||
HITEM | A long expression that indicates the column where the point belongs. |
Use the ItemFromPoint property to get the item from the point specified by the {X,Y}. The X and Y coordinates are expressed in client coordinates, so a conversion must be done in case your coordinates are relative to the screen or to other window. If the X parameter is -1 and Y parameter is -1 the ItemFromPoint property determines the handle of the item from the cursor. The ItemFromPoint returns 0 if no item is over the cursor. Use the ColumnFromPoint property to retrieve the column from point. Use the SelectableItem property to specify the user can select an item.
The following VB sample prints the caption of the cell over the cursor:
Private Sub ComboBox1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) With ComboBox1 Dim i As HITEM, c As Long, hit As EXCOMBOBOXLibCtl.HitTestInfoEnum i = .ItemFromPoint(X / Screen.TwipsPerPixelX, Y / Screen.TwipsPerPixelY, c, hit) If (i >= 0) Then Debug.Print .Items.CellCaption(i, c) & " HT = " & hit End If End With End Sub
The following VB sample displays the index of the icon being clicked ( use the CloseOnDblClick property to specify whether the user closes the drop down portion of the control by a single or double click ):
Private Sub ComboBox1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim h As HITEM, c As Long, hit As HitTestInfoEnum h = ComboBox1.ItemFromPoint(X / Screen.TwipsPerPixelX, Y / Screen.TwipsPerPixelY, c, hit) If (Not h = 0) Then If exHTCellIcon = (hit And exHTCellIcon) Then Debug.Print "The index of icon being clicked is: " & (hit And &HFFFF0000) / 65536 End If End If End Sub
The following C++ sample prints the cell from the caption and the hit test code:
void OnMouseMoveCombobox1(short Button, short Shift, long X, long Y) { long c = 0, hit = 0, i = m_combobox.GetItemFromPoint( X, Y, &c, &hit ); if ( i != 0 ) { CString strOutput = V2S( &m_combobox.GetItems().GetCellCaption(COleVariant(i), COleVariant(c) ) ); strOutput += " HT = "; strOutput += V2S(COleVariant(hit)); strOutput += "\r\n"; OutputDebugString( strOutput ); } }
The following VB.NET sample prints the cell from the caption and the hit test code:
Private Sub AxComboBox1_MouseMoveEvent(ByVal sender As Object, ByVal e As AxEXCOMBOBOXLib._IComboBoxEvents_MouseMoveEvent) Handles AxComboBox1.MouseMoveEvent With AxComboBox1 Dim i As Integer, c As Integer, hit As EXCOMBOBOXLib.HitTestInfoEnum i = .get_ItemFromPoint(e.x, e.y, c, hit) If (i >= 0) Then Debug.WriteLine(.Items.CellCaption(i, c) & " HT = " & hit.ToString()) End If End With End Sub
The following C# sample prints the cell from the caption and the hit test code:
private void axComboBox1_MouseMoveEvent(object sender, AxEXCOMBOBOXLib._IComboBoxEvents_MouseMoveEvent e) { EXCOMBOBOXLib.HitTestInfoEnum hit; int c = 0, i = axComboBox1.get_ItemFromPoint(e.x, e.y, out c, out hit); if (i != 0) System.Diagnostics.Debug.WriteLine(axComboBox1.Items.get_CellCaption(i, c).ToString() + " HT = " + hit.ToString() ); }
The following VFP sample prints the cell from the caption and the hit test code:
*** ActiveX Control Event *** LPARAMETERS button, shift, x, y With thisform.ComboBox1 local c, hit c = 0 hit = 0 .Items.DefaultItem = .ItemFromPoint(X , Y, @c, @hit) If (.Items.DefaultItem >= 0) Then wait window nowait .Items.CellCaption(0, c) + " HT = " + str(hit) EndIf EndWith