Problem mit SetLayeredWindowAttributes_

Anfängerfragen zum Programmieren mit PureBasic.
Eclipse
Beiträge: 99
Registriert: 04.06.2005 18:09

Problem mit SetLayeredWindowAttributes_

Beitrag von Eclipse »

Hi Leute :) ,

Ich möchte einem Fenster einen Fade-Effekt verpassen, wozu ich innerhalb bestimmer Zeitabstände bei SetLayeredWindowAttributes den dritten Parameter, also die Transparenz, nach oben drehe.

Nun habe ich aber in diesem Fenster auch einzelne Farbflächen ($FF00FF) die ich komplett und bis zum Schluss unsichtbar haben möchte.
Wenn ich nun also den Befehl ein weiteres Mal (diesmal mit LWA_COLORKEY) dazu nehme, erhalte ich ein sehr nerviges flackern.

Hat jemand eine Idee was ich machen könnte?
Eclipse
Beiträge: 99
Registriert: 04.06.2005 18:09

Beitrag von Eclipse »

Das gewünschte Ergebnis kann ich ebenfalls nicht mit AnimateWindow_ erreichen. Wenn ich die Farbe vorher maskiere und danach das Fenster einblenden lasse zeigen beide Effekte keine Wirkung.
Andersrum funktioniert es wie es soll, allerdings wird die zu maskierende Fläche erst nach dem Einblenden entfernt.

Codebeispiel:

Code: Alles auswählen

Procedure SetWinMask (_window.l) 
  SetWindowLong_(_window, #GWL_EXSTYLE, $00080000) ;$00080000=#WS_EX_Layered
  SetLayeredWindowAttributes_(_window, RGB(255,0,255), 255, 1)
EndProcedure 

Procedure SetBackground(_window.l,_img.l)
_hBrush.l = CreatePatternBrush_(_img)
  SetClassLong_(WindowID(_window), #GCL_HBRBACKGROUND, _hBrush.l)
  InvalidateRect_(WindowID(_window), #Null, #True) 
EndProcedure 

OpenWindow(#MainWindow, 0, 0, 600, 400, "", #PB_Window_ScreenCentered | #PB_Window_Invisible)

  SetBackground(#MainWindow,MainWindow_BG)
  SetWinMask(WindowID(#MainWindow)); <----- Hier liegt der Hund begraben. An dieser Position zeigen beide Effekte keine Wirkung
  AnimateWindow_(WindowID(#MainWindow),300,#AW_BLEND) 
   
Antworten