Von 4.0 zu 3.94

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
R4z0r1989
Beiträge: 521
Registriert: 12.06.2005 18:06
Kontaktdaten:

Von 4.0 zu 3.94

Beitrag von R4z0r1989 »

kann mir jemand diesen PB 4.0 Code in einen PB 3.94 code uwandeln

Code: Alles auswählen


Declare InitHoverButtons ()
Declare CreateHoverButton (GadgetID.l,x.l,y.l,ImageID_Normal.l,ImageID_Hovered.l)
Declare HoverButtonEvent()
Declare FuseImage2Window (ImageID.l)


#ButtonHovered=1
#ButtonNormal=2

UseJPEGImageDecoder(); Wichtig. Sonst kann kein JPG verwendet werden


If OpenWindow(0, 0, 0, 300, 250, #PB_Window_SystemMenu|#PB_Window_ScreenCentered, "HoverButton") And CreateGadgetList(WindowID(0))
   
    CatchImage (#ButtonNormal,?Button_Normal)
    CatchImage (#ButtonHovered,?Button_Hovered)
    FuseImage2Window (#ButtonNormal)
    FuseImage2Window (#ButtonHovered)


    If InitHoverButtons () 
       CreateHoverButton (1,100,20,#ButtonNormal,#ButtonHovered)
       CreateHoverButton (2,100,80,#ButtonNormal,#ButtonHovered)
       CreateHoverButton (3,100,140,#ButtonNormal,#ButtonHovered)
    EndIf

  Repeat
     WnEventID.l=WaitWindowEvent()
     HBEventID.l=HoverButtonEvent()
     Select WNEventID.l
       Case #PB_Event_Gadget
         Select HBEventID.l
            Case 1
            Beep_(1000,100)
            Case 2
            Beep_(2000,100)
            Case 3
            Beep_(3000,100)         
         EndSelect
      EndSelect
  Until WnEventID.l = #PB_Event_CloseWindow
EndIf


Procedure InitHoverButtons ()   
  Shared WsHB_Init.l
  If WsHB_Init.l=0
    Structure HoverButtonStruct
       GadgetID.l
       ImageID_Normal.l
       ImageID_Hovered.l
    EndStructure
    Global NewList HovButID.HoverButtonStruct () 
    WsHB_Init.l=1
    ProcedureReturn #True
    Else
    ProcedureReturn #False
  EndIf
EndProcedure


Procedure CreateHoverButton (GadgetID.l,x.l,y.l,ImageID_Normal.l,ImageID_Hovered.l)
   ImageGadget(GadgetID.l,x.l,y.l,ImageWidth(ImageID_Normal.l),ImageHeight(ImageID_Normal.l), ImageID_Normal.l)  ; Empfängt Klickevents wie das ButtonGadget
   AddElement (HovButID())
   HovButID ()\GadgetID=GadgetID.l
   HovButID ()\ImageID_Normal=ImageID(ImageID_Normal.l)
   HovButID ()\ImageID_Hovered=ImageID(ImageID_Hovered.l)
EndProcedure


Procedure HoverButtonEvent()
    ForEach HovButID ()
      wnd.l=GadgetID(HovButID ()\GadgetID)
      GetWindowRect_(wnd,re.RECT)
      GetCursorPos_(pt.POINT)
      Result = PtInRect_(re,pt\x,pt\y)
      If Result
        SetGadgetState (HovButID()\GadgetID,HovButID ()\ImageID_Hovered)
        WichGadget.l=HovButID()\GadgetID
        Else
        SetGadgetState (HovButID()\GadgetID,HovButID ()\ImageID_Normal)
      EndIf
    Next
    ProcedureReturn WichGadget.l
EndProcedure


Procedure FuseImage2Window (ImageID.l)
   StartDrawing (ImageOutput (ImageID.l))
   For x=0 To ImageWidth (ImageID.l)-1
     For y=0 To ImageHeight (ImageID.l)-1
       If Point (x,y)=RGB(255,0,255)
          Plot (x,y,GetSysColor_(#COLOR_BTNFACE))
       EndIf
     Next y
   Next x
   StopDrawing ()
EndProcedure


DataSection
   Button_Normal : IncludeBinary "Button_Normal.bmp"
   Button_Hovered : IncludeBinary "Button_Hovered.bmp"
EndDataSection

Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Müsste klappen, kanns ja nicht testen.

Code: Alles auswählen


Declare InitHoverButtons ()
Declare CreateHoverButton (GadgetID.l,x.l,y.l,ImageID_Normal.l,ImageID_Hovered.l)
Declare HoverButtonEvent()
Declare FuseImage2Window (ImageID.l)


#ButtonHovered=1
#ButtonNormal=2

UseJPEGImageDecoder(); Wichtig. Sonst kann kein JPG verwendet werden


If OpenWindow(0, 0, 0, 300, 250, #PB_Window_SystemMenu|#PB_Window_ScreenCentered, "HoverButton") And CreateGadgetList(WindowID(0))
   
    CatchImage (#ButtonNormal,?Button_Normal)
    CatchImage (#ButtonHovered,?Button_Hovered)
    FuseImage2Window (#ButtonNormal)
    FuseImage2Window (#ButtonHovered)


    If InitHoverButtons ()
       CreateHoverButton (1,100,20,#ButtonNormal,#ButtonHovered)
       CreateHoverButton (2,100,80,#ButtonNormal,#ButtonHovered)
       CreateHoverButton (3,100,140,#ButtonNormal,#ButtonHovered)
    EndIf

  Repeat
     WnEventID.l=WaitWindowEvent()
     HBEventID.l=HoverButtonEvent()
     Select WNEventID.l
       Case #PB_Event_Gadget
         Select HBEventID.l
            Case 1
            Beep_(1000,100)
            Case 2
            Beep_(2000,100)
            Case 3
            Beep_(3000,100)         
         EndSelect
      EndSelect
  Until WnEventID.l = #PB_Event_CloseWindow
EndIf


Procedure InitHoverButtons ()   
  Shared WsHB_Init.l
  If WsHB_Init.l=0
    Structure HoverButtonStruct
       GadgetID.l
       ImageID_Normal.l
       ImageID_Hovered.l
    EndStructure
    NewList HovButID.HoverButtonStruct ()
    WsHB_Init.l=1
    ProcedureReturn #True
    Else
    ProcedureReturn #False
  EndIf
EndProcedure


Procedure CreateHoverButton (GadgetID.l,x.l,y.l,ImageID_Normal.l,ImageID_Hovered.l)
UseImage(ImageID_Normal.l)
   ImageGadget(GadgetID.l,x.l,y.l,ImageWidth(),ImageHeight(), ImageID_Normal.l)  ; Empfängt Klickevents wie das ButtonGadget
   AddElement (HovButID())
   HovButID ()\GadgetID=GadgetID.l
   HovButID ()\ImageID_Normal=ImageID()
   UseImage(ImageID_Hovered.l)
   HovButID ()\ImageID_Hovered=ImageID()
EndProcedure


Procedure HoverButtonEvent()
    ForEach HovButID ()
      wnd.l=GadgetID(HovButID ()\GadgetID)
      GetWindowRect_(wnd,re.RECT)
      GetCursorPos_(pt.POINT)
      Result = PtInRect_(re,pt\x,pt\y)
      If Result
        SetGadgetState (HovButID()\GadgetID,HovButID ()\ImageID_Hovered)
        WichGadget.l=HovButID()\GadgetID
        Else
        SetGadgetState (HovButID()\GadgetID,HovButID ()\ImageID_Normal)
      EndIf
    Next
    ProcedureReturn WichGadget.l
EndProcedure


Procedure FuseImage2Window (ImageID.l)
UseImage(imageID.l)
   StartDrawing (ImageOutput ())
   For x=0 To ImageWidth ()-1
     For y=0 To ImageHeight ()-1
       If Point (x,y)=RGB(255,0,255)
          Plot (x,y,GetSysColor_(#COLOR_BTNFACE))
       EndIf
     Next y
   Next x
   StopDrawing ()
EndProcedure


DataSection
   Button_Normal : IncludeBinary "Button_Normal.bmp"
   Button_Hovered : IncludeBinary "Button_Hovered.bmp"
EndDataSection

Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Warum fragste nicht in der Lounge den Hroudtwolf, da haste den Code doch her.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
R4z0r1989
Beiträge: 521
Registriert: 12.06.2005 18:06
Kontaktdaten:

Beitrag von R4z0r1989 »

ja aber ich dachte er sei off

und danke für die antworten

habt ihr vl ne idee wie er wenn es ein ovaller button ist nur die Ovalle form nimmt also das ich den Button nicht den ganzen rechteckigen bereich um Button anklicken kann sondern wirklich nur den Button???
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Mit Sprites auf OpenwindowedScreen.
sonnst wirds komplizierter.
Benutzeravatar
R4z0r1989
Beiträge: 521
Registriert: 12.06.2005 18:06
Kontaktdaten:

Beitrag von R4z0r1989 »

ja aber da fängt mein Problem an das will ich nicht
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag von Hroudtwolf »

Die Autor-Remarks sind nicht umsonst am Kopf des Codes.
Wäre dir dankbar wenn du dir nicht mehr abschneidest vor dem Pasten in andere Foren.
Benutzeravatar
R4z0r1989
Beiträge: 521
Registriert: 12.06.2005 18:06
Kontaktdaten:

Beitrag von R4z0r1989 »

das is ne anschuldigung die nicht gerechtfertigt ist weil ich das von der datei die in der rar war kopiert hab und da war das nicht dabei!!!!
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag von Hroudtwolf »

OK.
Verzeihungssegen erteilt *amen*

Könntest dich aber in zukunft zumindest weiter mit mir über deine Probleme unterhalten anstatt damit gleich zu andern zu rennen noch bevor wir zu einer Lösung für dich gekommen sind.

Dabai fühl ich mich logischerweise ein wenig veräppelt ;-)
Benutzeravatar
R4z0r1989
Beiträge: 521
Registriert: 12.06.2005 18:06
Kontaktdaten:

Beitrag von R4z0r1989 »

tu mir leid war echt nicht im sinne das ich dich hintergehe oder sonstiges:
eine schriftliche und echt ernstgemeinte entschuldigung!!!

Sorry!!!
Antworten