Мое почтение!
Не подскажете, как узнать по какому сабайтему в листвью сделан клик?
Public Type LVHITTESTINFO
pt As POINTAPI
flags As Long
iItem As Long
iSubItem As Long
End Type
Public Const LVM_FIRST As Long = &H1000 ' ListView messages
Public Const LVM_SUBITEMHITTEST As Long = LVM_FIRST + 57
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
'
' Проверяет попадание данных координат на подэлемент списка
'
' Аргументы:
'
' nX - X-координата в твипах
' nY - Y-координата в твипах
' lv - собстно ListView
'
Public Function HitTestSubItem(ByVal nX As Single, ByVal nY As Single, ByVal lv As ListView) As Long
Dim hti As LVHITTESTINFO
' преобразуем координаты в пиксели
hti.pt.X = ScaleX(nX, vbTwips, vbPixels)
hti.pt.Y = ScaleY(nY, vbTwips, vbPixels)
hti.flags = LVHT_ONITEM
' собственно и все
SendMessage lv.hwnd, LVM_SUBITEMHITTEST, 0, hti
HitTestSubItem = hti.iSubItem
End Function
Viper писал(а):Используй SendMessage для отправки сообщения LVM_SUBITEMHITTEST и структуру LVHITTESTINFO, в которую помещаются координаты курсора перед отправкой сообщения, по после возвращается индекс сабитема, подробности в MSDN.
Const LVHT_ONITEMICON = &H2
Const LVHT_ONITEMLABEL = &H4
Const LVHT_ONITEMSTATEICON = &H8
Const LVHT_ONITEM = (LVHT_ONITEMICON Or LVHT_ONITEMLABEL Or LVHT_ONITEMSTATEICON)
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 79