Button in PanelGadget

Just starting out? Need help? Post your questions and find answers here.
milan1612
Addict
Addict
Posts: 894
Joined: Thu Apr 05, 2007 12:15 am
Location: Nuremberg, Germany
Contact:

Button in PanelGadget

Post by milan1612 »

Hey guys,

Image

Does anybody know how to place a little button right there where the arrow points to?
Many Texteditors and IDEs use this to provide ability to close a Panel Item.

Any ideas?

EDIT: BTW "Unbenannt" means "Unknown" :D
Windows 7 & PureBasic 4.4
User avatar
netmaestro
PureBasic Bullfrog
PureBasic Bullfrog
Posts: 8451
Joined: Wed Jul 06, 2005 5:42 am
Location: Fort Nelson, BC, Canada

Post by netmaestro »

Interesting little challenge, I think I covered all the bases:

http://www.purebasic.fr/english/viewtopic.php?t=28167

Let me know if I missed something.
BERESHEIT
User avatar
hallodri
Enthusiast
Enthusiast
Posts: 208
Joined: Tue Nov 08, 2005 7:59 am
Location: Germany
Contact:

Post by hallodri »

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


milan1612
Addict
Addict
Posts: 894
Joined: Thu Apr 05, 2007 12:15 am
Location: Nuremberg, Germany
Contact:

Post by milan1612 »

Hey thanks guys, just what I need :)
Windows 7 & PureBasic 4.4
Post Reply