Seite 1 von 1
[erledigt] s. übersetzer f. Code transparentes PNG Fenster
Verfasst: 01.10.2014 18:27
von udg
Hallo,
dieser Code funktioniert in PB 5.30 wie er soll.
nun arbeite ich jedoch mit der v4.61
wäre jemand so nett mir diesen für die v4.61 anzupassen? Mein bisheriger PNG Code für solche Sachen ist um Ellen länger und spielt sich immer in 2 Fenstern ab: Child + Parent
Danke für Hilfe
Code: Alles auswählen
UsePNGImageDecoder()
DataSection
Interface: ; bezeichnet das sprite im speicher
IncludeBinary "interface_test.png" ; Lade ein PNG mit Alphatransparenz
Interface_End: ; bezeichnet das sprite im speicher
EndDataSection
Define pic_1 = CatchImage(#PB_Any, ?Interface, ?Interface_End - ?Interface) ; Hintergrund Bild aus dem Speicher laden
OpenWindow(0, 0, 0, ImageWidth(pic_1), ImageHeight(pic_1), "", #PB_Window_ScreenCentered)
SetWindowLong_(WindowID(0), #GWL_EXSTYLE, GetWindowLong_(WindowID(0), #GWL_EXSTYLE) |
#WS_EX_LAYERED)
hDC = StartDrawing(ImageOutput(pic_1))
GetObject_(ImageID(pic_1), SizeOf(BITMAP), @BitmapInfo.BITMAP)
ContextOffset.POINT
BlendMode.BLENDFUNCTION
BlendMode\SourceConstantAlpha = 255
BlendMode\AlphaFormat = 1
UpdateLayeredWindow_(WindowID(0), 0, 0, @BitmapInfo+4, hDC, @ContextOffset, 0,
@BlendMode, 2)
StopDrawing()
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
EndSelect
;////////////////////////////////////////
;-Fenster mit Maus verschieben
SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
;////////////////////////////////////////
ForEver
Re: suche übersetzer für Code transparentes PNG
Verfasst: 01.10.2014 18:37
von NicTheQuick
Ich denke es liegt an dem Label "Interface", weil das ein Schlüsselwort ist, was vom Compiler für Interfaces benutzt wird.
Seit V5.00+ irgendwann kam wieder eine Änderung wegen Doppelpunkten, sodass es ab da wieder funktioniert.
Ungetestet:
Code: Alles auswählen
UsePNGImageDecoder()
DataSection
Label_Interface: ; bezeichnet das sprite im speicher
IncludeBinary "interface_test.png" ; Lade ein PNG mit Alphatransparenz
Label_Interface_End: ; bezeichnet das sprite im speicher
EndDataSection
Define pic_1 = CatchImage(#PB_Any, ?Label_Interface, ?Label_Interface_End - ?Label_Interface) ; Hintergrund Bild aus dem Speicher laden
OpenWindow(0, 0, 0, ImageWidth(pic_1), ImageHeight(pic_1), "", #PB_Window_ScreenCentered)
SetWindowLong_(WindowID(0), #GWL_EXSTYLE, GetWindowLong_(WindowID(0), #GWL_EXSTYLE) |
#WS_EX_LAYERED)
hDC = StartDrawing(ImageOutput(pic_1))
GetObject_(ImageID(pic_1), SizeOf(BITMAP), @BitmapInfo.BITMAP)
ContextOffset.POINT
BlendMode.BLENDFUNCTION
BlendMode\SourceConstantAlpha = 255
BlendMode\AlphaFormat = 1
UpdateLayeredWindow_(WindowID(0), 0, 0, @BitmapInfo+4, hDC, @ContextOffset, 0,
@BlendMode, 2)
StopDrawing()
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
EndSelect
;////////////////////////////////////////
;-Fenster mit Maus verschieben
SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
;////////////////////////////////////////
ForEver
Re: suche übersetzer für Code transparentes PNG
Verfasst: 02.10.2014 02:41
von udg
Danke Dir
leider funktioniert es nicht. PB meckert hier rum:
SetWindowLong_(WindowID(0), #GWL_EXSTYLE, GetWindowLong_(WindowID(0), #GWL_EXSTYLE) |
Syntax error
Ich denke mir mal, dass PB4.61 diesen Befehl nicht kennt: SetWindowLong_ ?
Grüße
EDIT:
Habe es hinbekommen. Läuft nun unter PB 4.61
Code: Alles auswählen
UsePNGImageDecoder()
DataSection
Label_Interface: ; bezeichnet das sprite im speicher
IncludeBinary "interface_test.png" ; Lade ein PNG mit Alphatransparenz
Label_Interface_End: ; bezeichnet das sprite im speicher
EndDataSection
Define pic_1 = CatchImage(#PB_Any, ?Label_Interface, ?Label_Interface_End - ?Label_Interface) ; Hintergrund Bild aus dem Speicher laden
OpenWindow(0, 0, 0, ImageWidth(pic_1), ImageHeight(pic_1), "", #PB_Window_ScreenCentered)
SetWindowLong_(WindowID(0), #GWL_EXSTYLE, GetWindowLong_(WindowID(0), #GWL_EXSTYLE) |#WS_EX_LAYERED)
hDC = StartDrawing(ImageOutput(pic_1))
GetObject_(ImageID(pic_1), SizeOf(BITMAP), @BitmapInfo.BITMAP)
ContextOffset.POINT
BlendMode.BLENDFUNCTION
BlendMode\SourceConstantAlpha = 255
BlendMode\AlphaFormat = 1
UpdateLayeredWindow_(WindowID(0), 0, 0, @BitmapInfo+4, hDC, @ContextOffset, 0, @BlendMode, 2)
StopDrawing()
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
EndSelect
;////////////////////////////////////////
;-Fenster mit Maus verschieben
SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
;////////////////////////////////////////
ForEver
Re: suche übersetzer für Code transparentes PNG
Verfasst: 02.10.2014 03:28
von STARGÅTE
Nö, aber du hast da n Zeilenumbruch drin der nicht sein darf, denn hinterm dem | fehlt ja das aus der nächsten Zeile:
Code: Alles auswählen
SetWindowLong_(WindowID(0), #GWL_EXSTYLE, GetWindowLong_(WindowID(0), #GWL_EXSTYLE) |
#WS_EX_LAYERED)
besser:
Code: Alles auswählen
SetWindowLong_(WindowID(0), #GWL_EXSTYLE, GetWindowLong_(WindowID(0), #GWL_EXSTYLE) | #WS_EX_LAYERED)
Re: suche übersetzer für Code transparentes PNG
Verfasst: 02.10.2014 03:46
von udg
jo , habs schon bemerkt und korrigiert.
Code: Alles auswählen
UpdateLayeredWindow_(WindowID(0), 0, 0, @BitmapInfo+4, hDC, @ContextOffset, 0,
@BlendMode, 2)
war auch falsch
muss:
Code: Alles auswählen
UpdateLayeredWindow_(WindowID(0), 0, 0, @BitmapInfo+4, hDC, @ContextOffset, 0, @BlendMode, 2)
danke
schon interessant, dass PB 5.30 das so annimmt mit den unvollständigen Codezeilen
Re: suche übersetzer für Code transparentes PNG
Verfasst: 02.10.2014 07:31
von Bisonte
udg hat geschrieben:... schon interessant, dass PB 5.30 das so annimmt mit den unvollständigen Codezeilen...
PB 5.10 - History hat geschrieben:- Hinzugefügt: Zeilenfortsetzungs-Funktion, mit folgenden Operanden: ',' '|' '+' And Or XOr
It's not a bug... it's a feature

Re: [erledigt] s. übersetzer f. Code transparentes PNG Fenst
Verfasst: 02.10.2014 08:59
von RSBasic
STARGÅTE hat geschrieben:besser:
Code: Alles auswählen
SetWindowLong_(WindowID(0), #GWL_EXSTYLE, GetWindowLong_(WindowID(0), #GWL_EXSTYLE) | #WS_EX_LAYERED)
Noch besser:
Code: Alles auswählen
SetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE, GetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE) | #WS_EX_LAYERED)
Re: [erledigt] s. übersetzer f. Code transparentes PNG Fenst
Verfasst: 02.10.2014 17:22
von udg
Ich bin froh, dass ich halbwegs was zu Stande bekomm mit Version 4.61. Das Problem für mich ist, dass sich mit jeder neuen Version etwas ändert (nicht schlimm und gut) und verändert oder ersetzt/ weggelassen wird, somit ältere Befehle nicht mehr unterstützt werden oder Codezeilen komplett umgeschrieben werden müssen :/
Für mich als Nicht Pro, schwierig. Darum verharre ich in meiner v4.61
gruß
Re: [erledigt] s. übersetzer f. Code transparentes PNG Fenst
Verfasst: 02.10.2014 17:28
von ts-soft
Dafür gibt es doch jetzt LTS Versionen. Vielleicht doch mal die 5.2x LTS probieren, da ist der Support länger garantiert
(keine Syntax-Änderungen, keine neue Funktionen nur Fehlerbereinigung).
Gruß
Thomas
Re: [erledigt] s. übersetzer f. Code transparentes PNG Fenst
Verfasst: 02.10.2014 17:30
von udg
okay danke. lade ich gleich mal runter, sind ja so viele Versionen verfügbar.