Page 1 sur 1

Comment changer la couleur du fond d'une fenêtre ?

Publié : dim. 16/mai/2004 16:35
par Necra
Voilà, j'ai crée une fenêtre avec la fonction OpenWindow()
Et je voudrait maintenant changer la couleur du fond de cette fenêtre.
Comment faire?
Merci

Publié : dim. 16/mai/2004 16:51
par julien
Utilise la lib puretool dispo sur www.purearenat.net

Publié : dim. 16/mai/2004 16:59
par Le Soldat Inconnu
ou alors ceci :

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 3.90
; 
; Explication du programme :
; Changer la couleur de fond de la fenêtre

; On ouvre la fenêtre en mode invisible
If OpenWindow(0, 0, 0, 300, 300, #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_Invisible, "Couleur de fond")
  
  ; Couleur de fond
  SetClassLong_(WindowID(0), #GCL_HBRBACKGROUND, CreateSolidBrush_(RGB(255, 255, 255)))
  
  HideWindow(0, 0) ; on montre la fenêtre
  
  Repeat
    Event = WaitWindowEvent()
  Until Event = #WM_CLOSE
EndIf

Publié : dim. 16/mai/2004 17:20
par Chris
Une troisième méthode:

Image
:roll:

Chris :)

Publié : dim. 16/mai/2004 18:10
par nico
J'aime bien la méthode de Chris, on peut mixer plusieurs couleurs! :lol:

Publié : dim. 16/mai/2004 18:22
par julien
Mais gare au coulure, ça c'est pas beau :wink:

Attention !

Publié : dim. 16/mai/2004 18:47
par DominiqueB
Dans le code tu as oublié un DeleteObject_() sur la brosse utlisée !
Tu risques des pertes de ressources si tu oublies cela !

Voici une version modifiée qui donne un fond hachuré :P

Code : Tout sélectionner

; Changer le type de fond de la fenêtre 
;#HS_BDIAGONAL   hachures 45-degrés de haut en bas et de la gauche vers la droite
;#HS_CROSS       hachures Horizontales et verticales en croix
;#HS_DIAGCROSS   hachures 45-degrés en croix
;#HS_FDIAGONAL   hachures 45-degrés de bas en haut et de la gauche vers la droite
;#HS_HORIZONTAL	hachures Horizontales
;#HS_VERTICAL   hachures verticales

; On ouvre la fenêtre en mode invisible 
If OpenWindow(0, 0, 0, 300, 300, #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_Invisible, "Couleur de fond") 
  Brosse.l = CreateHatchBrush_(#HS_FDIAGONAL, RGB(255, 182, 255))
  
  ; Couleur et type de fond 
  ;SetClassLong_(WindowID(0), #GCL_HBRBACKGROUND, CreateSolidBrush_(RGB(255, 182, 255))) 
  SetClassLong_(WindowID(0), #GCL_HBRBACKGROUND, Brosse)
  
  HideWindow(0, 0) ; on montre la fenêtre 
  
  Repeat 
    Event = WaitWindowEvent() 
  Until Event = #WM_CLOSE
  DeleteObject_(Brosse) ; On oublie pas de détruire l'objet quand on en a plus besoin !
EndIf

Dominique

Publié : lun. 17/mai/2004 8:34
par Le Soldat Inconnu
OK, va falloir que je corrige quelques codes, merci

Publié : lun. 17/mai/2004 8:45
par Anonyme2
Chris a écrit :Une troisième méthode:

Image
:roll:

Chris :)

:mrgreen: :mrgreen:

Publié : lun. 17/mai/2004 12:31
par Le Soldat Inconnu
moi, je supprime l'object directement après l'application du style au fond de la fenêtre, ça évite de l'oublier.
je ne pense pas que ça gène car cela fonctionne :)

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 3.90
; 
; Explication du programme :
; Changer la couleur de fond de la fenêtre

; On ouvre la fenêtre en mode invisible
If OpenWindow(0, 0, 0, 300, 300, #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_Invisible, "Couleur de fond")
  
  ; Couleur de fond
  CouleurFondFenetre = CreateSolidBrush_(RGB(255, 255, 255))
  SetClassLong_(WindowID(0), #GCL_HBRBACKGROUND, CouleurFondFenetre)
  DeleteObject_(CouleurFondFenetre)
  
  HideWindow(0, 0) ; on montre la fenêtre
  
  Repeat
    Event = WaitWindowEvent()
  Until Event = #WM_CLOSE
  
EndIf

Publié : mar. 18/mai/2004 19:37
par Necra
OK, merci à tous pour votre aide.... :D

Publié : mar. 18/mai/2004 20:06
par Chris
Surtout moi, j'ai vraiment bien aidé :lol: :jesors:

Chris :)

Publié : mer. 26/mai/2004 7:54
par comtois
Le Soldat Inconnu a écrit :moi, je supprime l'object directement après l'application du style au fond de la fenêtre, ça évite de l'oublier.
je ne pense pas que ça gène car cela fonctionne :)
J'ai testé ton code Sous XP familial , et ça ne fonctionnait pas .
J'ai placé DeleteObject_(CouleurFondFenetre) après la boucle , et là , c'est ok . Merci , je vais en avoir besoin :)