Subclassing ListIcon Header
RMB on header only
No interference with Licon
Code: Select all
Global oldCB,hi.LVHITTESTINFO
Procedure headerCB(hWnd, uMsg, wParam, lParam)
result = CallWindowProc_(oldCB, hWnd, uMsg, wParam, lParam)
Select uMsg
Case #WM_LBUTTONUP
GetCursorPos_(@p.POINT)
ScreenToClient_(GadgetID(0), p)
hi\pt\x = p\x
hi\pt\y = p\y
SendMessage_(GadgetID(0),#LVM_SUBITEMHITTEST,0,@hi)
Debug "LMB : " +Str(hi\iSubItem)
Case #WM_RBUTTONUP
GetCursorPos_(@p.POINT)
ScreenToClient_(GadgetID(0), p)
hi\pt\x = p\x
hi\pt\y = p\y
SendMessage_(GadgetID(0),#LVM_SUBITEMHITTEST,0,@hi)
Debug "RMB : " +Str(hi\iSubItem)
Case #WM_LBUTTONDBLCLK
GetCursorPos_(@p.POINT)
ScreenToClient_(GadgetID(0), p)
hi\pt\x = p\x
hi\pt\y = p\y
SendMessage_(GadgetID(0),#LVM_SUBITEMHITTEST,0,@hi)
Debug "LMB DCLICK : " +Str(hi\iSubItem)
EndSelect
ProcedureReturn result
EndProcedure
OpenWindow(5,0,0,640,480,"Test",#PB_Window_SystemMenu| #PB_Window_ScreenCentered)
ListIcon = ListIconGadget(0,10,10,620,460,"",0,#PB_ListIcon_GridLines)
header = SendMessage_(GadgetID(0),#LVM_GETHEADER,0,0)
AddGadgetColumn(0,1,"Column 1",210)
AddGadgetColumn(0,2,"Column 2",200)
AddGadgetColumn(0,3,"Column 3",200)
For i = 1 To 16
linestr.s = LSet(Str(i),3," ")
AddGadgetItem(0, -1, Chr(10)+"Text on Line "+linestr+" in Column 1"+Chr(10)+"Text on Line "+linestr+" in Column 2"+Chr(10)+"Text on Line "+linestr+" in Column 3")
Next
oldCB = SetWindowLongPtr_(header, #GWL_WNDPROC, @headerCB())
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Menu
Select EventMenu()
EndSelect
EndSelect
Until Quit = 1