J'ai 2 fen, une avec un OpenWindowedScreen en plein écran, et une autre toujours au premier plan et avec de la transparence.
et j'ai un gros prob de rafraichissement, la fenête avec transparence se mets à clignoter
Code : Tout sélectionner
; Auteur : Le Soldat Inconnu
; Version de PB : 3.90
;
; Explication du programme :
; Mettre la fenêtre toujours au premier plan (la fenêtre reste au dessus des autres fenêtres ouvertes)
Procedure SetWinTransparency(WinHandle.l, Transparency_Level.l)
If OpenLibrary(0, "user32.dll")
CallFunction(0, "SetLayeredWindowAttributes", WinHandle, 0, Transparency_Level, 2)
CloseLibrary(0)
EndIf
EndProcedure
If OpenWindow(0, 0, 0, 100, 100, #PB_Window_BorderLess, "Premier plan")
SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE) ; Pour mettre la fenêtre toujours au premier plan
; Paramètres de SetWindowPos_(Handle, Pos, x, y, TailleX, TailleY, Option)
; Handle = handle de la fenetre
; Pos = -1 : Définis la position de la fenetre, une valeur négative donne une fenetre toujours devant les autres
; x, y = 0, 0 : position de la fenetre
; TailleX, TailleY = 0, 0 : nouvelle taille de la fenetre mais ne sert pas car j'ai mis l'option #SWP_NOSIZE qui interdit de redimmentionner la fenetre
; Option : l'option #SWP_NOSIZE interdit de redimmentionner la fenetre avec la fonction SetWindowPos_() donc les paramètres de taille peuvent être mis à 0, 0
SetWindowLong_(WindowID(), #GWL_EXSTYLE, GetWindowLong_(WindowID(), #GWL_EXSTYLE) | $00080000) ; #WS_EX_LAYERED = $00080000
SetWinTransparency (WindowID(), 180)
If OpenWindow(1, 0, 0, 200, 200, #PB_Window_BorderLess, "Ecran")
InitSprite()
OpenWindowedScreen(WindowID(1), 0, 0, 200, 200, 1, 0, 0)
ShowWindow_(WindowID(1), #SW_MAXIMIZE) ; Met la fenêtre en plein écran
EndIf
Repeat
Event = WindowEvent()
ClearScreen(0, 0, 0)
StartDrawing(ScreenOutput())
Circle(50, 50, 25, $FFFF)
StopDrawing()
FlipBuffers()
Until Event = #WM_CLOSE
EndIf
Code : Tout sélectionner
; Auteur : Le Soldat Inconnu
; Version de PB : 3.90
;
; Explication du programme :
; Mettre la fenêtre toujours au premier plan (la fenêtre reste au dessus des autres fenêtres ouvertes)
Procedure SetWinTransparency(WinHandle.l, Transparency_Level.l)
If OpenLibrary(0, "user32.dll")
CallFunction(0, "SetLayeredWindowAttributes", WinHandle, 0, Transparency_Level, 2)
CloseLibrary(0)
EndIf
EndProcedure
If OpenWindow(0, 0, 0, 100, 100, #PB_Window_BorderLess, "Premier plan")
SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE) ; Pour mettre la fenêtre toujours au premier plan
; Paramètres de SetWindowPos_(Handle, Pos, x, y, TailleX, TailleY, Option)
; Handle = handle de la fenetre
; Pos = -1 : Définis la position de la fenetre, une valeur négative donne une fenetre toujours devant les autres
; x, y = 0, 0 : position de la fenetre
; TailleX, TailleY = 0, 0 : nouvelle taille de la fenetre mais ne sert pas car j'ai mis l'option #SWP_NOSIZE qui interdit de redimmentionner la fenetre
; Option : l'option #SWP_NOSIZE interdit de redimmentionner la fenetre avec la fonction SetWindowPos_() donc les paramètres de taille peuvent être mis à 0, 0
; SetWindowLong_(WindowID(), #GWL_EXSTYLE, GetWindowLong_(WindowID(), #GWL_EXSTYLE) | $00080000) ; #WS_EX_LAYERED = $00080000
; SetWinTransparency (WindowID(), 180)
If OpenWindow(1, 0, 0, 200, 200, #PB_Window_BorderLess, "Ecran")
InitSprite()
OpenWindowedScreen(WindowID(1), 0, 0, 200, 200, 1, 0, 0)
ShowWindow_(WindowID(1), #SW_MAXIMIZE) ; Met la fenêtre en plein écran
EndIf
Repeat
Event = WindowEvent()
ClearScreen(0, 0, 0)
StartDrawing(ScreenOutput())
Circle(50, 50, 25, $FFFF)
StopDrawing()
FlipBuffers()
Until Event = #WM_CLOSE
EndIf
Code : Tout sélectionner
; Auteur : Le Soldat Inconnu
; Version de PB : 3.90
;
; Explication du programme :
; Mettre la fenêtre toujours au premier plan (la fenêtre reste au dessus des autres fenêtres ouvertes)
Procedure SetWinTransparency(WinHandle.l, Transparency_Level.l)
If OpenLibrary(0, "user32.dll")
CallFunction(0, "SetLayeredWindowAttributes", WinHandle, 0, Transparency_Level, 2)
CloseLibrary(0)
EndIf
EndProcedure
If OpenWindow(0, 0, 0, 100, 100, #PB_Window_BorderLess, "Premier plan")
SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE) ; Pour mettre la fenêtre toujours au premier plan
; Paramètres de SetWindowPos_(Handle, Pos, x, y, TailleX, TailleY, Option)
; Handle = handle de la fenetre
; Pos = -1 : Définis la position de la fenetre, une valeur négative donne une fenetre toujours devant les autres
; x, y = 0, 0 : position de la fenetre
; TailleX, TailleY = 0, 0 : nouvelle taille de la fenetre mais ne sert pas car j'ai mis l'option #SWP_NOSIZE qui interdit de redimmentionner la fenetre
; Option : l'option #SWP_NOSIZE interdit de redimmentionner la fenetre avec la fonction SetWindowPos_() donc les paramètres de taille peuvent être mis à 0, 0
SetWindowLong_(WindowID(), #GWL_EXSTYLE, GetWindowLong_(WindowID(), #GWL_EXSTYLE) | $00080000) ; #WS_EX_LAYERED = $00080000
SetWinTransparency (WindowID(), 180)
If OpenWindow(1, 0, 0, 200, 200, #PB_Window_BorderLess, "Ecran")
InitSprite()
OpenWindowedScreen(WindowID(1), 0, 0, 200, 200, 1, 0, 0)
; ShowWindow_(WindowID(1), #SW_MAXIMIZE) ; Met la fenêtre en plein écran
EndIf
Repeat
Event = WindowEvent()
ClearScreen(0, 0, 0)
StartDrawing(ScreenOutput())
Circle(50, 50, 25, $FFFF)
StopDrawing()
FlipBuffers()
Until Event = #WM_CLOSE
EndIf