All pastes #26232 Raw Edit

Mine

public text v1 · immutable
#26232 ·published 2005-10-22 00:59 UTC
rendered paste body
Enumeration 1 ;Windows 
  #Window_0 
EndEnumeration 

Enumeration 1;Gadgets 
  #ImageGadget_0 
  #ImageGadget_1 
EndEnumeration 

Enumeration 1 ;Images 
  #Image_0 
  #Image_1 
  #Image_2
  #Image_3
  #Image_4
  #image_5
EndEnumeration 

Declare MyCallback(WindowID,message,wParam,lParam) 

LeftNormal = CreateImage(#Image_0, 16, 16) 
RightNormal = CreateImage(#Image_1, 16, 16) 
LeftHot = CreateImage(#Image_2, 16, 16)
RightHot = CreateImage(#Image_3, 16, 16)
LeftDown = CreateImage(#Image_4, 16, 16)
Rightdown = CreateImage(#image_5, 16, 16)

UseImage(#Image_0) 
StartDrawing(ImageOutput()) 
Box(0, 0, 16, 16, RGB(0, 0, 255)) 
StopDrawing() 

UseImage(#Image_1) 
StartDrawing(ImageOutput()) 
Box(0, 0, 16, 16, RGB(255, 0, 0)) 
StopDrawing() 

UseImage(#Image_2) 
StartDrawing(ImageOutput()) 
Box(0, 0, 16, 16, RGB(0, 255, 0)) 
StopDrawing() 

UseImage(#Image_3) 
StartDrawing(ImageOutput()) 
Box(0, 0, 16, 16, RGB(0, 255, 0)) 
StopDrawing() 

UseImage(#Image_4) 
StartDrawing(ImageOutput()) 
Box(0, 0, 16, 16, RGB(255, 255, 0)) 
StopDrawing() 

UseImage(#image_5) 
StartDrawing(ImageOutput()) 
Box(0, 0, 16, 16, RGB(255, 255, 0)) 
StopDrawing() 

If OpenWindow(#Window_0, 0, 0, 300, 300, #PB_Window_SystemMenu, "OwnButton Test") 
  If CreateGadgetList(WindowID()) 
    IG_Handle = ImageGadget(#ImageGadget_0, 5, 5, 16, 16, LeftNormal) 
    IG_Handle2 = ImageGadget(#ImageGadget_1, 30, 5, 16, 16, RightNormal) 
  EndIf 
EndIf 
  
CB = GetWindowLong_(IG_Handle, #GWL_STYLE) 
SetWindowLong_(IG_Handle, #GWL_STYLE, CB | #SS_NOTIFY) 

CD = GetWindowLong_(IG_Handle2, #GWL_STYLE) 
SetWindowLong_(IG_Handle2, #GWL_STYLE, CD | #SS_NOTIFY) 

SetWindowCallback(@MyCallback())
MouseEvent = 0 ;0 = Mouse is up (reset), 1 = mouse is down (hold)

Repeat 
  Event = WindowEvent() 
  
  If Event = #PB_Event_Gadget
    MouseEvent = 1
  EndIf 
  
  If Event = #WM_LBUTTONUP
    MouseEvent = 0
  EndIf
  
  GetCursorPos_(Cursor.POINT) 
  
  If WindowFromPoint_(Cursor\x,Cursor\y)=GadgetID(#ImageGadget_0)
    If MouseEvent = 0
      SetGadgetState(#ImageGadget_0, LeftHot)
    Else
      Select Event
        Case #PB_Event_Gadget
          Select EventGadgetID()
            Case #ImageGadget_0
              SetGadgetState(#ImageGadget_0, LeftDown)
          EndSelect
      EndSelect
    EndIf
  Else
    SetGadgetState(#ImageGadget_0, LeftNormal)
  EndIf
  
  If WindowFromPoint_(Cursor\x,Cursor\y)=GadgetID(#ImageGadget_1)
    If MouseEvent = 0
      SetGadgetState(#ImageGadget_1, RightHot)
    Else
      Select Event
        Case #PB_Event_Gadget
          Select EventGadgetID()
            Case #ImageGadget_1
              SetGadgetState(#ImageGadget_1, Rightdown)
          EndSelect
      EndSelect
    EndIf
  Else
    SetGadgetState(#ImageGadget_1, RightNormal)
  EndIf
  
  Delay(10) 
Until Event = #PB_EventCloseWindow 

Procedure MyCallback(WindowID,message,wParam,lParam) 
  Result = #PB_ProcessPureBasicEvents 
  Select message
    
  EndSelect
  ProcedureReturn Result 
EndProcedure