Gestion Skin

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
julien
Messages : 846
Inscription : ven. 30/janv./2004 15:06
Contact :

Gestion Skin

Message par julien »

J'utilise la lib skinwin, mais j'ai quelques problème :

- Impossible de déplacer les fenêtres
- Les gadget normal sont mal affiché (présence du fond)

une idée ?

Merci
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Bizarre, j'ai jamais eu de problème avec cette lib.

Normalement, si tu as fait ta fenêtre comme ça, (ou quelque chose dans le même style):

Code : Tout sélectionner

OpenWindow(#Window_0, 0, 0, 300, 400, #PB_Window_ScreenCentered|#PB_Window_Invisible|#PB_Window_BorderLess , "",0)

SkinWin(WindowID(#Window_0),UseImage(hFond))
HideWindow(#Window_0,0)
ça doit fonctionner.
Ca vient peut-être de ton image

Pour le déplacement, tu n'as qu'à mettre ça au début de la boucle:

Code : Tout sélectionner

  Repeat
    Select WindowEvent()
      Case #WM_LBUTTONDOWN
        SendMessage_(WindowID(#Window_0), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Code : Tout sélectionner

Les gadget normal sont mal affiché (présence du fond) 
Normal ils n'aiment pas les fautes d'orthographe : NORMAUX :lol: :lol:
julien
Messages : 846
Inscription : ven. 30/janv./2004 15:06
Contact :

Message par julien »

Dsl pour la faute, mais ça ne marche pas quand même... :lol: :lol:

Voici le zip avec le code + image, le problème c'est que les gadgets ne sont pas transparents (box test) avec le fond..

Merci Chris pour le déplacement de la fenêtre mais il arrive qu'elle reste bloqué..


http://heisspiter.no-ip.com/~julien/Pur ... s/skin.zip
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Pour la fenêtre qui reste bloquée, retire un des deux WindowEvent(), et ça fonctionne mieux.

Code : Tout sélectionner

Repeat
  ;WaitWindowEvent()     ;<--- Il faut choisir, c'est un, ou l'autre
  Select WindowEvent()   ;<---
    Case #WM_LBUTTONDOWN
      SendMessage_(WindowID(#Window_0), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
Pour la transparence, alors là ???

Le plus simple serait sans doute que tu mettes le texte de certain gadgets directement sur l'image, (Cases à cocher, Text, Boutons d'options, etc...), parce que je ne vois pas comment faire.
julien
Messages : 846
Inscription : ven. 30/janv./2004 15:06
Contact :

Message par julien »

Chris, j'y avait pensé... mais le problème c'est que je ne peux pas modifier le texte après...
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

T'est exigeant, toi, comme mec ! :lol:

Il faudrait trouver le moyen de rendre les TextGadget() transparents. Ca doit pouvoir se faire, peut-être que dans la prochaine version, Fred pourrait nous rajouter un paramètre pour la transparence.

Fred ????
julien
Messages : 846
Inscription : ven. 30/janv./2004 15:06
Contact :

Message par julien »

je sais.... :lol: par contre essaye de mettre un menu classique avec un skin.... le menu reste toujours en haut puis le skin vient après... c'est très moche
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

tu peux utiliser ma lib ButtonImageGadget pour faire tous les objets de ta fen.
c'est ce que j'ai fait par exemple sur ma calculatrice pour les boutons ou sur mon bi-exploreur

en clair pour une chekbox gadget, tu fais deux images, l'une avec la boite coché et l'autre sans
et quand on clique sur le bouton, tu changes l'image.

après, tu peux également passé par des gadget OwnerDraw, c'est compliqué au possible mais faisable
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
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Tout ce que je peux te proposer, c'est ça :oops:

Code : Tout sélectionner

Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #CheckBox_0
  #CheckBox_1
  #CheckBox_2
  #Button_0
EndEnumeration

Enumeration
  #ImageFond
EndEnumeration


FontStd = LoadFont(#PB_Any,"Arial",10)

Procedure SetText(Image,Text$,x,y,w,h,Font)
  
  hImageText = GrabImage(Image, #PB_Any,x,y,w,h)
  StartDrawing(ImageOutput()) : DrawingMode(1) : DrawingFont(UseFont(Font))
  DrawText(Text$)
  StopDrawing()
  
  UseImage(Image)
  StartDrawing(WindowOutput())
  DrawImage(UseImage(hImageText),x,y)
  StopDrawing()
  
  FreeImage(hImageText)
EndProcedure
  
hwnd=OpenWindow(#Window_0,10,10, 320, 95,#PB_Window_ScreenCentered|#PB_Window_Invisible|#PB_Window_BorderLess, "New window ( 0 )")
hBitmap = LoadImage(#ImageFond,"fond.bmp")

If CreateGadgetList(WindowID())
  CheckBoxGadget(#CheckBox_0, 10,30, 15, 15, "")
  CheckBoxGadget(#CheckBox_1, 10,50, 15, 15, "")
  CheckBoxGadget(#CheckBox_2, 10,70, 15, 15, "")
  
  ButtonGadget(#Button_0, 230, 30, 70, 60, "OK")
EndIf

SkinWin(hwnd, hBitmap)
HideWindow(#Window_0,0)

SetText(#ImageFond,"Test1",40,30,60,15,FontStd) 
SetText(#ImageFond,"Test2",40,50,60,15,FontStd) 
SetText(#ImageFond,"Test3",40,70,60,15,FontStd)


Repeat
  Select WindowEvent()
    Case #WM_LBUTTONDOWN
      SendMessage_(WindowID(#Window_0), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
      
    Case #PB_Event_Gadget
      Select EventGadgetID()
        
        Case #CheckBox_0
          If GetGadgetState(#CheckBox_0) = 1
            SetText(#ImageFond,"Coché",40,30,60,15,FontStd)
          ElseIf GetGadgetState(#CheckBox_0) = 0
            SetText(#ImageFond,"Décoché",40,30,60,15,FontStd)
          EndIf
          
        Case #CheckBox_1
          If GetGadgetState(#CheckBox_1) = 1
            SetText(#ImageFond,"Coché",40,50,60,15,FontStd)
          ElseIf GetGadgetState(#CheckBox_1) = 0
            SetText(#ImageFond,"Décoché",40,50,60,15,FontStd)
          EndIf
          
        Case #CheckBox_2
          If GetGadgetState(#CheckBox_2) = 1
            SetText(#ImageFond,"Coché",40,70,60,15,FontStd)
          ElseIf GetGadgetState(#CheckBox_2) = 0
            SetText(#ImageFond,"Décoché",40,70,60,15,FontStd)
          EndIf
            
        Case #Button_0 : Quit = #True
      EndSelect
  EndSelect
Until Quit 
Répondre