Seite 2 von 2

Verfasst: 06.07.2008 21:40
von ts-soft
Vielleicht lädtste mal die Examples zu PBOSL, da ist auch ein Skin-Creator
bei. Und falls Du keine aktuelle Version für PB4.20 hast, dann auch mal
Updaten.

Aber da Du nur schnippsel zusammenkopierst, da laß das mit SkinWin mal
lieber weg.

Gruß
Thomas

Verfasst: 06.07.2008 22:24
von Ractur

Code: Alles auswählen

;
; by Danilo, modified 26.06.2003
;
If OpenWindow(0,0,0,455,335,"PB - SkinWin Example 4",#PB_Window_BorderLess|#PB_Window_ScreenCentered|#PB_Window_Invisible)
  CreateGadgetList(WindowID(0))
    ProgressBarGadget(0,70,150,293,15,0,100)
;    ButtonGadget(1, 300, 240, 60, 25, "EXIT")

    SkinWin(WindowID(0),CatchImage(0,?SkinPicture))
  HideWindow(0,0)
  ButtonImageGadget(1,200,200,100,25,CatchImage(0,?Button1))

  Repeat
    SetGadgetState(0,Random(100))

    Select WaitWindowEvent()
      ; IF LeftMouseButton pressed...
      Case #WM_LBUTTONDOWN
        SendMessage_(WindowID(0),#WM_NCLBUTTONDOWN, #HTCAPTION,0)
      ; Check Buttons...
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 1 ; EXIT
            End
        EndSelect
      ; pressed ALT+F4 ??
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf
End

DataSection
  SkinPicture:
    IncludeBinary "PB.bmp"
      Button1:
    IncludeBinary "c:\Button1.bmp"
EndDataSection
Das ist der Originalcode aus dem Example!

http://www.ractur.de/PB.bmp
http://www.ractur.de/Button1.bmp

Egal wo ich:

Code: Alles auswählen

  ButtonImageGadget(1,200,200,100,25,CatchImage(0,?Button1))
hinsetze, es läuft nicht!

So:

Code: Alles auswählen

  CreateGadgetList(WindowID(0))
    ProgressBarGadget(0,70,150,293,15,0,100)
;    ButtonGadget(1, 300, 240, 60, 25, "EXIT")

    SkinWin(WindowID(0),CatchImage(0,?SkinPicture))
  HideWindow(0,0)
  ButtonImageGadget(1,200,200,100,25,CatchImage(0,?Button1))

Der Button wird zwar dargestellt, aber sobald das Fenster in den Hintergrund gerät und dann wieder in den Vordergrund, spinnt das Fenster!

So:

Code: Alles auswählen

  CreateGadgetList(WindowID(0))
    ProgressBarGadget(0,70,150,293,15,0,100)
;    ButtonGadget(1, 300, 240, 60, 25, "EXIT")
  ButtonImageGadget(1,200,200,100,25,CatchImage(0,?Button1))
    SkinWin(WindowID(0),CatchImage(0,?SkinPicture))
  HideWindow(0,0)
Es wird der Button nicht angezeigt!

Mit Normalen ButtonGadget funktioniert es aber! Aber wenn ich schon ein geskinntes Window habe, möchte ich echt nicht dann die hässlichen StandartButtons verwenden. örgs...

Vielleicht liegts ja an mir, aber so wie ich das seh liegts eher an SkinWin....Naja vll. läufts ja bei Euch?!

Grüsse Matthias

Verfasst: 06.07.2008 22:28
von ts-soft
Du nutzt 2x CatchImage mit der ImageID 0, das zweite wird das erste wohl
überschreiben :wink:

Verfasst: 06.07.2008 22:38
von Ractur

Code: Alles auswählen

;
; by Danilo, modified 26.06.2003
;
If OpenWindow(0,0,0,455,335,"PB - SkinWin Example 4",#PB_Window_BorderLess|#PB_Window_ScreenCentered|#PB_Window_Invisible)
  CreateGadgetList(WindowID(0))
    ProgressBarGadget(0,70,150,293,15,0,100)
;    ButtonGadget(1, 300, 240, 60, 25, "EXIT")

    SkinWin(WindowID(0),CatchImage(0,?SkinPicture))
  HideWindow(0,0)
  ButtonImageGadget(1,200,200,100,25,CatchImage(1,?Button1))

  Repeat
    SetGadgetState(0,Random(100))

    Select WaitWindowEvent()
      ; IF LeftMouseButton pressed...
      Case #WM_LBUTTONDOWN
        SendMessage_(WindowID(0),#WM_NCLBUTTONDOWN, #HTCAPTION,0)
      ; Check Buttons...
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 1 ; EXIT
            End
        EndSelect
      ; pressed ALT+F4 ??
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf
End

DataSection
  SkinPicture:
    IncludeBinary "PB.bmp"
      Button1:
    IncludeBinary "c:\Button1.bmp"
EndDataSection
AUA :allright: Danke ts-soft, das wars ^^ Mein Gott, da sieht man halt wie dämlich ich manchmal bin :o Mann mann mann, und da such ich mir die Finger Wund XD Und Nerv Euch damit auch noch ;)

Ja, das ist das Problem, ich fang halt leider erst an,

ich dachte die Bilder werden eigens wo ich lade seperat angelegt und mit CatchImage holt man sich das Bild raus. Dabei dachte ich das das Bild eben durch den extra Dateinamen bezeichnet wird, und nicht mit der 0 bei Catchimage. Ich dachte Catchimage wäre ein reiner Befehl, ohne dabei ein Quasi "Array" bzw. Speicherbereich anzusprechen. Und wenn dachte ich der Speicherbereich wäre durch den Bildnamen adressiert.

Oh mein Gott, entschuldigt! Aber ich habs echt nicht besser gewusst *sich schämend in die Ecke stellt* :oops:

Danke auf jeden Fall für die tolle Hilfe, wieder was dazu gelernt ;)

Danke! Matthias

Verfasst: 06.07.2008 22:43
von ts-soft
Bei der Gelegenheit:
Nutze Konstanten und Enumeration für PB-IDs!

Code: Alles auswählen

Enumeration ;Fenster
  #frm_Main
  #frm_Dialog
EndEnumeration

Enumeration ;Gadgets
  #btn_Stop
  #btn_End
EndEnumeration

Enumeration ;Images
  #img_Skin
  #img_Button1
EndEnumeration
Gruß
Thomas

Verfasst: 07.07.2008 00:01
von Ractur
Danke :allright: Wusste noch nicht das dies geht, das macht das Programm wesentlich übersichtlicher, Danke für den Tip! :allright: