ResizeWindow() & Flackern

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

ResizeWindow() & Flackern

Beitrag von Lukaso »

Hallo,

ich habe für meinen kommende MP3-Software jetzt so nen Art Slideout geproggt (da die BalloonTips doch nur Probleme machten/machen). Es Funktioniert soweit auch ganz prima, aber beim Raussliden Flackert der Player so komisch, nun würde ich gerne das Flackern entfernen.

Hier der Code, der für Slideout zuständig ist (vereinfacht, nur nach rechts)

Code: Alles auswählen

Procedure AnimeWindowSlideout(text$)
  LoadFont(10, "VERDANA", 10, #PB_Font_Bold)
  StartDrawing(WindowOutput())
  DrawingFont(UseFont(10))
  pix = TextLength(text$)
    For i=40 To pix+60 Step 1
      ResizeGadget(#Gadget_2, i-4, -1, -1, -1)
      If i = 40 
        HideGadget(#Gadget_3, 0)
      ElseIf i > 40
        ResizeGadget(#Gadget_3, 36, -1, i-40, -1)
      EndIf
      ResizeWindow(i, 40)
      Delay(1)
    Next i
    DrawingMode(1)
    FrontColor(0, 0, 0)
    Locate(46,11)
    DrawText(text$)      
    Delay(3500)
    For i=pix+60 To 40 Step -1
      ResizeGadget(#Gadget_2, i-4, -1, -1, -1)
      If i = 40 
        HideGadget(#Gadget_3, 1)
      ElseIf i > 40
        ResizeGadget(#Gadget_3, 36, -1, i-40, -1)
      EndIf
      ResizeWindow(i, 40)
      Delay(1)
    Next i
  StopDrawing()
  CloseFont(10)
EndProcedure
Zum nachvollziehen wie ich das meine:
http://www.lukaso.org/pix.zip

Einfach eine MP3-Datei mit ID3v2-Tag (in das Icon)hineinziehen. Danach wird nach 5sec. der Titel per Slideout angezeigt. (Flackern beachten)

Danke für Lösungscorschläge!

MFG Lukaso
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Beitrag von Lukaso »

Kann mir keiner sagen, worand das liegen könnte? :cry:
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
Benutzeravatar
ChaOsKid
Beiträge: 66
Registriert: 29.08.2004 15:07
Wohnort: Oktoberfest

Beitrag von ChaOsKid »

hi Lukaso,

vielleicht hilft ein while windowevent() : wend (nach ResizeWindow)

und bei mir raucht die beta.exe mit den meisten mp3's ab
erst nachdem ich die id tags mit winamp neu gespeichert hab geht es
liegt aber vielleicht auch an meinen mp3's ;)

mfG
Tobi
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Beitrag von Lukaso »

@ChaOsKid
Ne, bringt nix, flackert immer noch :|
Bei mir und meinen 3 Kumpels ist der Player bis jetzt noch nie abgerausch, kann aber auch wie gesagt an den ID3 Tags liegen, habe im moment nur die Funktion für ID3v2 Tags drinne :allright:

MFG Lukaso
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
Benutzeravatar
ChaOsKid
Beiträge: 66
Registriert: 29.08.2004 15:07
Wohnort: Oktoberfest

Beitrag von ChaOsKid »

mir is noch was aufgefallen
wenn ich beim einblenden des tags anfange das fenster zu verschieben dann fehlt danach das halbe fenster und der text

das mit dem text kommt glaube ich weil du den text mit StartDrawing(WindowOutput()) in das fenster zeichnest

ps: so ein kleiner lauffähiger testcode wäre nicht schlecht zum testen
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Beitrag von Lukaso »

Als ich gerade nen testcode machen wollte, hat sich herausgestellt, dass es an der Transperenz Funktion liegt, wenn ich die Transperenz ausschalte, Flackert nix mehr, aber mein Player lebt nunmal von der Transperenz :wink:

Hier mal meine Transparenzfunktion:

Code: Alles auswählen

Procedure SetWinOpacity (hwnd.l, Opacity.l)
  SetWindowLong_(hwnd, #GWL_EXSTYLE, $00080000) 
  If OpenLibrary(1, "user32.dll") 
    CallFunction(1, "SetLayeredWindowAttributes", hwnd, 0, Opacity, 2) 
    CloseLibrary(1) 
  EndIf 
EndProcedure 
Ich denke es liegt am:

Code: Alles auswählen

SetWindowLong_(hwnd, #GWL_EXSTYLE, $00080000) 
MFG Lukaso
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
Antworten