Button wird nicht mehr richtig dargestellt + Fenster stirbt!

Anfängerfragen zum Programmieren mit PureBasic.
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 »

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
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
Ractur
Beiträge: 128
Registriert: 24.06.2008 11:51

Beitrag 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
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 »

Du nutzt 2x CatchImage mit der ImageID 0, das zweite wird das erste wohl
überschreiben :wink:
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
Ractur
Beiträge: 128
Registriert: 24.06.2008 11:51

Beitrag 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
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 »

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
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
Ractur
Beiträge: 128
Registriert: 24.06.2008 11:51

Beitrag von Ractur »

Danke :allright: Wusste noch nicht das dies geht, das macht das Programm wesentlich übersichtlicher, Danke für den Tip! :allright:
Antworten