Posted: Sun Jul 29, 2007 6:22 am
Code: Select all
;-
Procedure _subclass_cb_(hWnd,uMsg,wParam,lParam)
oldProc = getprop_(hWnd,"TCOldP")
If #WM_LBUTTONDOWN = uMsg
hti.TC_HITTESTINFO
hti\pt\x = (lParam & $FFFF)
hti\pt\y = (lParam >> 16 & $FFFF)
item = SendMessage_(hWnd,#TCM_HITTEST,0,@hti)
If hti\flags & #TCHT_ONITEMICON
RemoveGadgetItem(GetDlgCtrlID_(hWnd),item)
EndIf
EndIf
ProcedureReturn CallWindowProc_(oldProc,hWnd,uMsg,wParam,lParam)
EndProcedure
;-
Procedure main()
hWnd = OpenWindow(0,#PB_Ignore,#PB_Ignore,640,480,"leer",#WS_OVERLAPPEDWINDOW)
closeButton = CatchImage(0,?close_bmp_Start,?close_bmp_End-?close_bmp_Start)
CreateGadgetList(hWnd)
PanelGadget(0,0,0,640,480)
For i = 0 To 4
AddGadgetItem(0,i,"item "+Str(i),closeButton)
Next
oldProc = setwindowlong_(GadgetID(0),#GWL_WNDPROC,@_subclass_cb_())
Setprop_(GadgetID(0),"TCOldP",oldProc)
Repeat
event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow
EndProcedure:main()
DataSection
close_bmp_Start:
Data.l $00F64D42,$00000000,$00760000,$00280000,$00100000,$00100000,$00010000,$00000004,$00800000,$00000000,$00000000,$00000000
Data.l $00000000,$00000000,$00000000,$80000080,$80000000,$00800080,$00800000,$80800080,$80800000,$C0C00080,$000000C0,$FF0000FF
Data.l $FF000000,$00FF00FF,$00FF0000,$FFFF00FF,$FFFF0000,$008700FF,$00000000,$FF7F7800,$FFFFFFFF,$FF0FF7FF,$FFFFFFFF,$F00FF0FF
Data.l $FFFFFFFF,$FF0FF00F,$F0FFFF0F,$FF0FF0FF,$0FFFFFF0,$FF0FF0FF,$FFF00FFF,$FF0FF0FF,$FF0FF0FF,$FF0FF0FF,$FF0FF0FF,$FF0FF0FF
Data.l $FFF00FFF,$FF0FF0FF,$0FFFFFF0,$FF0FF0FF,$F0FFFF0F,$F00FF0FF,$FFFFFFFF,$FF0FF00F,$FFFFFFFF,$FF7FF0FF,$FFFFFFFF,$0087F7FF
Data.l $00000000
Data.b $00,$78
close_bmp_End:
EndDataSection