Tranparence + Fenêtre liée au bureau + Vista

Programmation d'applications complexes
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Tranparence + Fenêtre liée au bureau + Vista

Message par Le Soldat Inconnu »

Coucou,

et voilà Vista qui fait ch ....

j'arrive à lié une fenêtre au bureau
j'arrive à mettre de la transparence sur une fenêtre

la solution est différente entre Vista et XP (ou 2000)

Et sous Vista, ce n'est pas encore tout à fait bon car la fenêtre apparait dans la barre des taches, une idée ?

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 4
;
; Explication du programme :
; Pour faire des programmes de test rapidement, il ne reste qu'a rajouter les gadgets et la gestion des évènements.

If OSVersion() <= #PB_OS_Windows_XP
  DesktopID = FindWindow_(0, "Program manager")
Else
  DesktopID = FindWindow_(0, "FolderView")
EndIf


; Création de la fenêtre et de la GadgetList
If OpenWindow(0, 0, 0, 300, 300, "Test", #PB_Window_ScreenCentered | #PB_Window_BorderLess) = 0
  End
EndIf

SetParent_(WindowID(0), DesktopID)
SetWindowLong_(WindowID(0), #GWL_EXSTYLE, GetWindowLong_(WindowID(0), #GWL_EXSTYLE) | $00080000) ; #WS_EX_LAYERED = $00080000
setLayeredWindowAttributes_(WindowID(0), 0, 128, 2)

Repeat
  Event = WaitWindowEvent()
  
  Select Event
    Case #PB_Event_Menu
      Select EventMenu() ; Menus
          
      EndSelect
      
    Case #PB_Event_Gadget
      Select EventGadget() ; Gadgets
          
      EndSelect
  EndSelect
  
Until Event = #PB_Event_CloseWindow
Dernière modification par Le Soldat Inconnu le lun. 06/juil./2009 17:57, modifié 1 fois.
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)]
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

deja ça bug là ! ;)

Code : Tout sélectionner

setLayeredWindowAttributes_(, 0, 128, 2) 
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

oui, oui, j'ai corrigé le code

et j'ai trouvé aussi une solution qui semble marcher, vive Vista et Microchiotte

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 4
;
; Explication du programme :
; Pour faire des programmes de test rapidement, il ne reste qu'a rajouter les gadgets et la gestion des évènements.

DesktopID = FindWindow_(0, "Program Manager")
WindowPinToDesktop = OpenWindow(#PB_Any, 0, 0, 100, 10, "", #PB_Window_Invisible)
If WindowPinToDesktop
  SetParent_(WindowID(WindowPinToDesktop), DesktopID)
EndIf

; Création de la fenêtre et de la GadgetList
If OpenWindow(0, 0, 0, 300, 300, "Test", #PB_Window_ScreenCentered | #PB_Window_BorderLess, WindowID(WindowPinToDesktop)) = 0
  End
EndIf
SetWindowLong_(WindowID(0), #GWL_EXSTYLE, GetWindowLong_(WindowID(0), #GWL_EXSTYLE) | $00080000) ; #WS_EX_LAYERED = $00080000
SetLayeredWindowAttributes_(WindowID(0), 0, 128, 2)

Repeat
  Event = WaitWindowEvent()
  
  Select Event
    Case #PB_Event_Menu
      Select EventMenu() ; Menus
          
      EndSelect
      
    Case #PB_Event_Gadget
      Select EventGadget() ; Gadgets
          
      EndSelect
  EndSelect
  
Until Event = #PB_Event_CloseWindow
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)]
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Message par kernadec »

bonsoir
pour le fun

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu 
; Version de PB : 4 
; 
; Explication du programme : 
; Pour faire des programmes de test rapidement, il ne reste qu'a rajouter les gadgets et la gestion des évènements. 
 
DesktopID = FindWindow_(0, "Program Manager") 
WindowPinToDesktop = OpenWindow(#PB_Any, 0, 0, 100, 10, "", #PB_Window_Invisible) 
If WindowPinToDesktop 
 SetParent_(WindowID(WindowPinToDesktop), DesktopID) 
EndIf 
 
; Création de la fenêtre et de la GadgetList 
If OpenWindow(0, 0, 0, 300, 300, "Test", #PB_Window_ScreenCentered | #PB_Window_BorderLess, WindowID(WindowPinToDesktop)) = 0 
 End 
EndIf 
SetWindowRgn_(WindowID(0), CreateRoundRectRgn_(0, 0, 300, 300, 300, 300), 0) 
SetWindowLong_(WindowID(0), #GWL_EXSTYLE, GetWindowLong_(WindowID(0), #GWL_EXSTYLE) | $00080000) ; #WS_EX_LAYERED = $00080000 
SetLayeredWindowAttributes_(WindowID(0), 0, 128, 2) 

CreateImage(0, WindowWidth(0), WindowHeight(0))   
 StartDrawing(ImageOutput(0)) 
  DrawingMode(1) 
  For n = 0 To 255 
  ; Box(0,n*2,512,2,RGB(n,n,n)) 
   Circle (n*2,n*2,n*2,RGB(215-n,145+n,255-n)) 
   ;Box(0,n*5,512,5,RGB(255-n,255-n,255)) 
   ;Box(0,n*10,512,10,RGB(255-n,255-n,255)) 
   ;Box(0,n*8,512,8,RGB(255-n,255-n,255)) 
  ; Box(0,n*3,512,3,RGB(n,n,255-n)) 
   ;Box(0,n*3,512,3,RGB(n,255-n,n)) 
   ;Box(0,n*3,512,3,RGB(255-n,n,n)) 
  Next 
  StopDrawing() 
 
 ImageGadget(0,0,0,ImageWidth(0), ImageHeight(0), ImageID(0)) 
 DisableGadget(0,1) 
 ButtonGadget(2, 50, 90, 80, 20 ,"< { @ } >",#PB_Button_Toggle) 
 ButtonGadget(4, 180, 90, 80, 20 ,"< { @ } >",#PB_Button_Toggle) 
 ButtonGadget(6, 135, 130, 35,60 ,"__",#PB_Button_Toggle) 
 StringGadget(8, 115, 220, 80, 20,"      Allo Win") 
 StickyWindow(0,1)

Repeat 
 Event = WaitWindowEvent() 
  
 Select Event 
   Case #WM_LBUTTONDOWN  
   SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTCAPTION, 0) 
  
  Case #PB_Event_Menu 
   Select EventMenu() ; Menus 
      
   EndSelect 
    
  Case #PB_Event_Gadget 
   Select EventGadget() ; Gadgets 
   Case 2  
   Debug "Bouton2"  
   Case 4  
   Debug "Bouton4"  
   Case 6  
   Debug "Quitter" 
   End  
   EndSelect   
   
 EndSelect 
  
Until Event = #PB_Event_CloseWindow 
cordialement
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Le genial soldat a écrit :vive Vista et Microchiotte
:lol: :lol: Et c'est tellement vrai :lol: :lol:

@Kernadec
Cool ta "teutai" de bonzhome 8)
Par contre ce qui serait encore mieux, c'est que les "tonbou" et les champs y soit pas tranparents :D
Mais je crois que c'est assez dur a faire, il faut détourer chaque element et creer des zones de non transparence.
J'avais essayé mais evidement....."j'avais pas arrivé" :cry:

En ce temps la j'essayais de faire des fenetres VISTA sous XP :roll:
En fin de compte y'a que ça qui me plais sous vista...c'est ses fenetres transparentes.

Quand je pense que je viens de decouvrir qu'ils ont viré le bouton super utile de retour a l'arboresence parent :?
On se demande ce qui passe par la tete de bilou de laisser faire un truc pareil :twisted:

Maintenant faut faire ALT + Fleche pour remonter (Enfin de memoire car je l'ai pas sous la main)
Et CTRL + N pour avoir une nouvelle fenetre, alors qu'avant tu faisait CTRL et clic sur ce bouton et t'avais en un coup une nouvelle fenetre avec le repertoire parent :D

Alors
Le genial soldat a écrit :vive Vista et Microchiotte
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

tres joli :)
Répondre