Fenêtre transparente

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Fenêtre transparente

Message par Le Soldat Inconnu »

ce code ne marche que avec windows XP

Code : Tout sélectionner

Procedure SetWinTransparency (WinHandle.l, Transparency_Level.l)
  SetWindowLong_(WinHandle, #GWL_EXSTYLE, $00080000) ; #WS_EX_LAYERED = $00080000
  SetLayeredWindowAttributes_(WinHandle, 0, Transparency_Level, 2) ;
EndProcedure

hWnd = OpenWindow(0, 0, 0, 400, 360, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_Invisible, "")

SetWinTransparency(WindowID(), 0)
HideWindow(0, 0)

For a = 1 To 255
  SetWinTransparency(WindowID(), a) : While WindowEvent() : Wend
Next

For a = 1 To 255
  SetWinTransparency(WindowID(), 255 - a) : While WindowEvent() : Wend
Next
Je ne me rapelle plus qui me l'avait passé mais encore un grand merci à cette personne
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
julien
Messages : 846
Inscription : ven. 30/janv./2004 15:06
Contact :

Message par julien »

Salut,

C'est moi qui t'avais filé le code sur l'ancien forum,
pour info le code marche sous Windows 2000 et sous XP

Sous 98 l'exe refuse de se lancer avec un message d'erreur : User32.dll...
Sous Nt... je ne sais pas... pour le moment je cherche un moyen pour que l'exe qui contient cette fonction puisse être lancé sous 98 quand même, mais j'ai toujours pas trouvé...!
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

C'est "simple" en théorie, il suffit d'extraire de user32.dll SetLayeredWindowAttributes et puis c'est tout, mais pour ça...........en plus ce ne doit pas être légal. Je vais reposter mon code de transparence mais elle est complètement différente et moins jolie seulement elle est compatible tous windows :wink:
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

Pour executer ce code sur Win98 aussi (meme si ca ne fera rien) il suffit d'utiliser OpenLibrary() pour charger la fonction dynamiquement.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

OUi, c'est ce que je comptait faire pour l'utiliser sur toute les plateformes
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre