Fenetre transparente

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Euhhh!!!

Comment on l'arrête ton carré ???
:snipersmile: :2gunfire:
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Faut quand même avoir l'esprit tordu pour vouloir qu'un gros carré rose complètement incontrolable vienne se balader n'importe où sur l'écran :lol:
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

il suffit de faire un click droit sur la barre des taches et de cliquer sur "fermer" :wink: ou alors tu évites de sésactiver le débugger
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Code : Tout sélectionner

#Principale=0 

x.l : y.l 

hWnd1 = OpenWindow(#Principale,0,0,100,100, #PB_Window_borderless , "Carré") 

himg = CreateImage(0,100,100) ; Cré et colorise le rectangle 
StartDrawing(ImageOutput()) 
  Box(0,0,100,100,RGB(Random(255),Random(255),Random(255))) 
StopDrawing() 

 hBrush1.l = CreatePatternBrush_(himg) ; Affiche le rectangle dans la fenêtre 
 SetClassLong_(hWnd1 ,#GCL_HBRBACKGROUND, hBrush1) 
 InvalidateRect_(hWnd1, #NULL, #TRUE) 
  
 SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE) ; Met la fenêtre toujours au premier plan 
  
 AddKeyboardShortcut(#Principale,#PB_Shortcut_Escape,0)
 
Repeat 
 Select WindowEvent() 
   Case #PB_Event_Closewindow 
     End
   Case #PB_event_Menu
     End
 EndSelect
 x + Random(10)-5 : y + Random(10)-5
 MoveWindow(x,y) 
 Delay(10)
ForEver 
Voilà, maintenant la couleur change à chaque lancement et en appuyant sur echap on quitte :P
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Tiens, je l'ai juste modifié pour que le carré rebondisse sur les bords de l'écran. (J'aime bien, quand ça rebondit sur le bord de l'écran :lol: )

On pourrait même peut-être envisager de mettre ça dans un thread, pour éviter que le carré s'arrête quand on sélectionne une fenêtre.

Code : Tout sélectionner

#Principale=0 

xMax = GetSystemMetrics_(#SM_CXSCREEN)
yMax = GetSystemMetrics_(#SM_CYSCREEN)
DepX = 6 : DepY = 8

x.l : y.l 

hWnd1 = OpenWindow(#Principale,0,0,100,100, #PB_Window_BorderLess , "Carré") 

himg = CreateImage(0,100,100) ; Cré et colorise le rectangle 
StartDrawing(ImageOutput()) 
Box(0,0,100,100,RGB(Random(255),Random(255),Random(255))) 
StopDrawing() 

hBrush1.l = CreatePatternBrush_(himg) ; Affiche le rectangle dans la fenêtre 
SetClassLong_(hWnd1 ,#GCL_HBRBACKGROUND, hBrush1) 
InvalidateRect_(hWnd1, #Null, #True) 
  
SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE) ; Met la fenêtre toujours au premier plan 
  
AddKeyboardShortcut(#Principale,#PB_Shortcut_Escape,0) 
  
Repeat 
  Select WindowEvent() 
    Case #PB_Event_CloseWindow 
      End 
    Case #PB_Event_Menu 
      End 
  EndSelect 
  
  x + DepX : y + DepY
  If x >= xMax-100 Or x <=0 : DepX = -DepX : EndIf
  If y >= yMax-100 Or y <=0 : DepY = -DepY : EndIf
  
  ;x + Random(30)-5 : y + Random(30)-5 
  MoveWindow(x,y) 
  Delay(10) 
ForEver 
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Vos désirs sont des ordres maitre

Code : Tout sélectionner

Procedure Carre(par.b)
  #Principale=0 

  xMax = GetSystemMetrics_(#SM_CXSCREEN) 
  yMax = GetSystemMetrics_(#SM_CYSCREEN) 
  DepX = 6 : DepY = 8 

  x.l : y.l 

  hWnd1 = OpenWindow(#Principale,0,0,100,100, #PB_Window_BorderLess , "Carré") 

  himg = CreateImage(0,100,100) ; Cré et colorise le rectangle 
  StartDrawing(ImageOutput()) 
  Box(0,0,100,100,RGB(Random(255),Random(255),Random(255))) 
  StopDrawing() 

  hBrush1.l = CreatePatternBrush_(himg) ; Affiche le rectangle dans la fenêtre 
  SetClassLong_(hWnd1 ,#GCL_HBRBACKGROUND, hBrush1) 
  InvalidateRect_(hWnd1, #Null, #True) 
    
  SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE) ; Met la fenêtre toujours au premier plan 
    
  AddKeyboardShortcut(#Principale,#PB_Shortcut_Escape,0) 
    
  Repeat 
    Select WindowEvent() 
      Case #PB_Event_CloseWindow 
        End 
      Case #PB_Event_Menu 
        End 
    EndSelect 
    
    x + DepX : y + DepY 
    If x >= xMax-100 Or x <=0 : DepX = -DepX : EndIf 
    If y >= yMax-100 Or y <=0 : DepY = -DepY : EndIf 
    
    ;x + Random(30)-5 : y + Random(30)-5 
    MoveWindow(x,y) 
    Delay(10) 
  ForEver
EndProcedure

Debug CreateThread(@Carre(),0)
Par contre ça ne fonctionne plus si on enlève le debug :?: (je connait pas trop les threads moi, d'ailleurs je ne vois pas de différence avec ou sans thread sur mon PC)
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Ben non, quand on y réfléchi, ça peut pas servir à grand-chose, puisque le carré est déjà dans un thread différent des autres applications ouvertes.

Chui vraiment c.., parfois :lol:
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Bonjour à tous !

Nouveau défit si vous l'acceptez !

Comment remplacer le rectangle ou carré par une forme quelconque exemple un trait en diagonale, un cercle ou une combinaison des deux ....

Là vous allez peut être caler !! lol

NB : J'ai réellement besoin de cela ce n'est pas un caprice même si je le tourne sous forme de jeux !
Denis

Bonne Jounée à tous
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

facile, il suffit de mettre un masque sur la fenêtre avec ce code par exemple :

http://perso.wanadoo.fr/lesoldatinconnu ... cifique.pb

mais on peut aussi utiliser la lib SkinWin de Danilo, la il suffit de faire une image avec une coleur fixé comme transparente et de l'appliqué à la fen, la lib fait le reste ;)
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)]
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

C'est vrai que la lib de Danilo est pas mal, par contre, si c'est pas trop embêtant, pourquoi ça :?: :?: :?:
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Le Sodat Inconnu tu merites à etre connu !
Ton code est type top, [pil poil] ce que je cherchais.
Vous êtes tous de chefs ! (je n'en ai jamais douté !)
Denis

Bonne Jounée à tous
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

j'ai pas suivi Oliv ?

pour la lib, j'ai un doute, je sais plus si c'est skinwin ou une autre ...
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)]
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

La lib c'est bien skinwin, ma question je la posais à brossden, car je me demande à quoi est-ce que ça peut servir
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

ben par exemple faire une arraignée qui se ballade sur le haut de l'écran sous windows :lol:
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)]
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Le Soldat Inconnu, saurais tu faire cette fameuse araignée ?
Denis

Bonne Jounée à tous
Répondre