Hi
Header is totally different Class than ListView(ListIcon)
Code:
Global oldproc ,header
Procedure SubClass_LV(hWnd, uMsg, wParam, lParam)
result = CallWindowProc_(oldproc, hWnd, uMsg, wParam, lParam)
Select uMsg
Case #WM_NOTIFY
*nmh.NMHDR = lParam
Select *nmh\code
Case #NM_RCLICK
GetCursorPos_ (@p.POINT)
ScreenToClient_ (header, @p)
nmhi.HD_HITTESTINFO
nmhi\pt\x = p\x
nmhi\pt\y = p\y
SendMessage_(header,#HDM_HITTEST,0,@nmhi)
index = nmhi\iItem
Debug index
EndSelect
Case #WM_RBUTTONDOWN
nmlv.LVHITTESTINFO
nmlv\pt\x = (lParam & $FFFF)
nmlv\pt\y = (lParam>> 16 & $FFFF)
SendMessage_(GadgetID(0),#LVM_SUBITEMHITTEST,0,@nmlv)
row = nmlv\iItem
col = nmlv\iSubItem
Debug row
Debug col
EndSelect
ProcedureReturn result
EndProcedure
If OpenWindow(0, 0, 0, 300, 200, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered )
ListIconGadget(0, 5, 5, 290, 190, "Name", 100, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
header = SendMessage_(GadgetID(0),#LVM_GETHEADER,0,0)
AddGadgetColumn(0, 1, "Address", 250)
AddGadgetItem(0, -1, "Harry Rannit"+Chr(10)+"12 Parliament Way, Battle Street, By the Bay")
AddGadgetItem(0, -1, "Ginger Brokeit"+Chr(10)+"130 PureBasic Road, BigTown, CodeCity")
oldproc = SetWindowLongPtr_(GadgetID(0), #GWL_WNDPROC, @SubClass_LV())
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf