Librairie SkinWindow (Fenêtres et gadgets skinnés)

Programmation d'applications complexes
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Message par Ar-S »

J'ai un petit soucis, j'ai un bouton qui ne s'affiche en "Actif"

En gros quand j'appuie sur #G_Stop, ça fonctionne (l'image change) mais pas quand j'appuie sur #G_Jouer (pourtant le rollover marche et l'action de jouer se produit).

Code : Tout sélectionner

Case #G_Jouer
	    SetSkinItemState(#G_Jouer, 1)
            SetSkinItemState(#G_Stop, 0)
            SetSkinItemState(#G_Liste, 0)

          Case #G_Stop
	    SetSkinItemState(#G_Stop, 1)
            SetSkinItemState(#G_Jouer, 0)
            SetSkinItemState(#G_Liste, 0)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Message par Le Soldat Inconnu »

Bon, pour ton problème, j'ai verrouillé un peu plus la librairie pour palier au mauvais Item.png

Et j'ai ajouté la fonction isSkinItem() pour tester si un item est présent ou non sur le skin.
C'est un point important car la librairie supporte le fait que les Items utilisés dans le code existent ou non sur le skin.
Donc en testant si un Item existe, on peut modifier le gestion du programme en fonction des items présent sur le skin.

Voir le premier message pour télécharger la lib avec les exemples et un début d'aide.
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
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Message par Ar-S »

Ok merci pour la maj
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Message par Le Soldat Inconnu »

Mise à jour du code pour de petit problème d'affichage
http://www.lsi-dev.com/index.php?mod=do ... erid&id=48
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
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Message par Ar-S »

Ma fenêtre ne se créée pas, j'ai le "Erreur" du messagerequester()
Je ne pige pas pourquoi.

Code : Tout sélectionner

If CreateSkinWindowFromTheme(0, FenX, FenY, "", #PB_Window_Invisible, 0, "skin/01")
Pourtant mons kin est bien dans skin/01
01/Selected.png etc....)

Code : Tout sélectionner

; Si la librairie SkinWindow n'est pas installé, on met la librairie en include
CompilerIf Defined(SetLayeredWindow, #PB_Function) = 0
	IncludeFile "SkinWindow.pb"
	SkinWindow_Init()
CompilerEndIf

#G_BT1 = $1000FF
#G_BT2 = $2000FF
#G_Fond = $FFFFFF

;TailleEcran()
L=GetSystemMetrics_(#SM_CXSCREEN)
H=GetSystemMetrics_(#SM_CYSCREEN)
FenX=L-255 : FenY=H-322
LisX=230 : LisY=402

; Créer une fenetre skinnée à partir des images du dossier "skin/01"
If CreateSkinWindowFromTheme(0, FenX, FenY, "", #PB_Window_Invisible, 0, "skin/01")
	StickyWindow(0,1)
	SkinItemMoveWindow(#G_Fond, 1)
	
	; On ajoute un gadget
  HideSkinWindow(0, 0)
	
	Repeat
		event = WaitSkinWindowEvent()
		; Si on a le focus sur la fenêtre, on affiche l'écran dans l'état actif
    If GetActiveSkinWindow() = 0
			DisableSkinWindow(0,0)
    Else
      DisableSkinWindow(0,1)
    EndIf  
		
		Select EventSkinWindow() ; Fenêtre skinnée qui a reçu un évènement
      Case 0 ; Fenêtre principale
				Select EventSkinItem() ; Item appuyé
            
          Case #G_BT1
            
            SetSkinItemState(#G_BT1, 1)
            SetSkinItemState(#G_BT2, 0)
          
            Case #G_BT2
            
            SetSkinItemState(#G_BT2, 1)
            SetSkinItemState(#G_BT1, 0)

        EndSelect
    EndSelect
    
  Until event = #PB_Event_CloseWindow
	
Else
  MessageRequester(" ","erreur")
  End
EndIf
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Message par Le Soldat Inconnu »

c'est plutôt \ à la place de / :mrgreen:
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
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Message par Ar-S »

Bxxxx de mxxxxx de pxxxxx de sxxxxxxxx de mes cxxxxxxx ! :mrgreen:

-----edit ----

Même chose ! :?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Message par Ar-S »

J'ajouterai qu'après vérif, "/" marche bien sur mon programme de radio..

P.S : je suis débile j'ai pas mis le plus important dans mes skin....
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Message par Ar-S »

Bon j'avais oublié item.png...

A un autre niveau, une amélioration intéressante serait de pouvoir faire 2 fichiers Item.png si notre skin comporte des boutons de tailles différentes selon qu'ils soient Sélectionnés ou non. Je ne crois pas que ce soit possible en l'état actuel, ou du moins les résultats sont parfois surprenant..

Example, comment gérer un bouton comme ci dessous à son etat ON OFF
Image

Cela permettrait de faire des interfaces vraiment sympa (genre tirer une languette etc..)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Message par Le Soldat Inconnu »

ça doit pouvoir ce faire en l'état actuel, je vais voir pour un exemple
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)]
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Message par Le Soldat Inconnu »

et voilà

Code : Tout sélectionner

#Item_Bouton1 = $FF0000
#Item_Bouton2 = $FF00FF

Enumeration 1
	#Image_Item
	#Image_Normal
	#Image_Selected
	#Image_Disable
EndEnumeration

CreateImage(#Image_Item, 200, 200, 32)
StartDrawing(ImageOutput(#Image_Item))
	Box(0, 0, 200, 200, $000000)
	Box(50, 50, 50, 50, #Item_Bouton2)
	Box(50, 100, 50, 20, #Item_Bouton1)
StopDrawing()
CreateImage(#Image_Normal, 200, 200, 32)
StartDrawing(ImageOutput(#Image_Normal))
	Box(0, 0, 200, 200, $FFFFFF)
	Box(50, 100, 50, 20, $00FF00)
	Box(25, 120, 100, 50, $0000FF)
StopDrawing()
CreateImage(#Image_Disable, 200, 200, 32)
StartDrawing(ImageOutput(#Image_Disable))
	Box(0, 0, 200, 200, $FFFFFF)
	Box(50, 100, 50, 20, $00FF00)
	Box(25, 120, 100, 50, $0000FF)
StopDrawing()
CreateImage(#Image_Selected, 200, 200, 32)
StartDrawing(ImageOutput(#Image_Selected))
	Box(0, 0, 200, 200, $FFFFFF)
	Box(50, 50, 50, 50, $FF0000)
	Box(50, 100, 50, 20, $FF0000)
	Box(25, 120, 100, 50, $0000FF)
StopDrawing()

If CreateSkinWindow(0, 0, 0, "SkinWindow", #PB_Window_ScreenCentered, 0, #Image_Normal, 0, #Image_Selected, 0, #Image_Disable, #Image_Item, 0, 0, 0)
	
	LinkSkinItem(#Item_Bouton1, #Item_Bouton2)
	SkinItemMoveWindow(#Item_Bouton2, 1)
	
	Repeat
		Event = WaitSkinWindowEvent()
		Select EventSkinItem()
			Case #Item_Bouton1
				If GetSkinItemState(#Item_Bouton1)
					SetSkinItemState(#Item_Bouton1, 0)
				Else
					SetSkinItemState(#Item_Bouton1, 1)
				EndIf
			Case #Item_Bouton2
				If GetSkinItemState(#Item_Bouton1)
					SetSkinItemState(#Item_Bouton1, 0)
				EndIf
		EndSelect
		
	Until Event = #PB_Event_CloseWindow
	
	
EndIf
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
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Message par Ar-S »

Merci pour le code, je vais étudier ça.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Message par Ar-S »

Code : Tout sélectionner

UsePNGImageDecoder() 

;boutons interface
#C_UPLOAD = $0000FF
#C_ADD = $0000BA
#C_AFFICHE=$000084
#C_OPENLIST=$30FF00
#C_NEWLIST=$21B000
#C_DEL=$136700
#C_LEAVE=$2C08
; 3 boutons du haut
#C_ABOUT=$CB7968
#C_UPDATE=$A90077
#C_DONATE=$FF00B4
;fond
#C_Fond =$FFFFFF

Global rep$=GetCurrentDirectory()
Global img_SelectHot,img_Select,img_Normal,img_Item,img_Hot,img_Disable
Global L,H,FenX,FenY


L=GetSystemMetrics_(#SM_CXSCREEN)
H=GetSystemMetrics_(#SM_CYSCREEN)
FenX=L-705 : FenY=H-500
LisX=230 : LisY=402

; On charge les images
img_Normal=LoadImage(10,rep$+"skin/Normal.png")
img_Disable=LoadImage(11,rep$+"skin/Disable.png")
img_Hot=LoadImage(12,rep$+"skin/Hot.png")
img_Select=LoadImage(13,rep$+"skin/Selected.png")
img_SelectHot=LoadImage(14,rep$+"skin/SelectedHot.png")
img_Item=LoadImage(15,rep$+"skin/Item.png")

; Vérifiactaion que les images se sont chargées
If img_Normal=0 Or img_Disable=0 Or img_Hot=0 Or img_Select=0 Or img_SelectHot=0 Or img_Item=0
  MessageRequester("Erreur","initialisation des images impossible")
End
EndIf

If  CreateSkinWindow(0, FenX, FenY, "test", #PB_Window_Invisible, 0, img_Normal, img_Hot, img_Select, img_SelectHot, img_Disable, Image_Item, 0, 0, 0) 
	StickyWindow(0,1)
	SkinItemMoveWindow(#C_Fond, 1)
	HideSkinWindow(0, 0)
	
	Repeat
		event = WaitSkinWindowEvent()
		; Si on a le focus sur la fenêtre, on affiche l'écran dans l'état actif
    If GetActiveSkinWindow() = 0
			DisableSkinWindow(0,0)
    Else
      DisableSkinWindow(0,1)
    EndIf  
		
		Select EventSkinWindow() ; Fenêtre skinnée qui a reçu un évènement
      Case 0 ; Fenêtre principale
				Select EventSkinItem() ; Item appuyé
            
          Case #C_UPLOAD
            
            SetSkinItemState(#C_UPLOAD, 1)
            SetSkinItemState(#C_ADD, 0)
            
          Case #C_ADD
            
            SetSkinItemState(#C_ADD, 1)
            SetSkinItemState(#C_UPLOAD, 0)
            
        EndSelect
    EndSelect
    
  Until event = #PB_Event_CloseWindow
	
Else
  MessageRequester(" ","erreur")
  End
EndIf
Est-ce que UsePNGImageDecoder() est nécessaire ?
Est-ce que cette syntaxe est correcte pour CreateSkinWindow ?
Pour le moment ma fenêtre n'apparait pas...
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Message par Progi1984 »

Ar-S a écrit :Est-ce que UsePNGImageDecoder() est nécessaire ?
Oui, vu que tu charges des images (LoadImage) au format PNG.
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Message par Ar-S »

Que j'essaye

Code : Tout sélectionner

If  CreateSkinWindowFromTheme(0, FenX, FenY, "test", #PB_Window_Invisible, 0,"skin")
ou

Code : Tout sélectionner

If  CreateSkinWindow(0, FenX, FenY, "test", #PB_Window_Invisible, 0, img_Normal, img_Hot, img_Select, img_SelectHot, img_Disable, Image_Item, 0, 0, 0) 
ça ne marche pas, pourtant cette fois j'ai les images citées bien présentes
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre