Code : Tout sélectionner
; forum english auteur Netmaestro ..
#LVM_SUBITEMHITTEST = #LVM_FIRST + 57
Global oldlist,lv
Procedure SubClass_LV(hwnd, msg, wparam, lparam)
result = CallWindowProc_(oldlist, hwnd, msg, wparam, lparam)
If msg = #WM_LBUTTONDOWN
HitInfo.LVHITTESTINFO
Hitinfo\pt\x = WindowMouseX(0)
HitInfo\pt\y = WindowMouseY(0)
SendMessage_(lv,#LVM_SUBITEMHITTEST,0,@HitInfo)
If hitinfo\iSubItem=1
SetGadgetItemColor(0,hitinfo\iitem,#PB_Gadget_BackColor,RGB(220, 75,75),hitinfo\iSubItem)
EndIf
If hitinfo\iSubItem=2
SetGadgetItemColor(0,hitinfo\iitem,#PB_Gadget_BackColor,RGB(75, 220, 75),hitinfo\iSubItem)
EndIf
If hitinfo\iSubItem=3
SetGadgetItemColor(0,hitinfo\iitem,#PB_Gadget_BackColor,RGB(0, 150, 220),hitinfo\iSubItem)
EndIf
Debug GetGadgetItemText(0,hitinfo\iitem,hitinfo\iSubItem) +" mouse clic gauche"
EndIf
If msg = #WM_RBUTTONDOWN
HitInfo.LVHITTESTINFO
Hitinfo\pt\x = WindowMouseX(0)
HitInfo\pt\y = WindowMouseY(0)
SendMessage_(lv,#LVM_SUBITEMHITTEST,0,@HitInfo)
SetGadgetItemColor(0,hitinfo\iitem,#PB_Gadget_BackColor, RGB(190,220,240),hitinfo\iSubItem)
Debug GetGadgetItemText(0,hitinfo\iitem,hitinfo\iSubItem) +" mouse clic droit"
EndIf
ProcedureReturn result
EndProcedure
OpenWindow(0,0,0,640,480,"ListIcon Gadget Mischief: Get Selected Item",$CF0001)
CreateGadgetList(WindowID(0))
lv = ListIconGadget(0,0,0,640,480,"",0)
AddGadgetColumn(0,1,"Column 1",210)
AddGadgetColumn(0,2,"Column 2",210)
AddGadgetColumn(0,3,"Column 3",215)
SetGadgetColor(0, #PB_Gadget_BackColor, RGB(190,220,240))
For i = 1 To 32
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
oldlist=SetWindowLong_(lv, #GWL_WNDPROC, @SubClass_LV())
Repeat:Until WaitWindowEvent()=#WM_CLOSE