Pb avec les skinages des fenêtres

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

C'est bon j'ai en gros réglé mes problèmes. J'avais plusieurs endroits problèmatiques et en faisant des tests j'ai réussit à trouver les bugs.

Par contre pour le CallBack(), j'ai tjrs un pb dont je n'ai pas parlé avant :
j'ai un ScrollAreaGadget et je n'arrive pas à le texturer (lui donner une couleur d'arrière plan).

J'ai rajouter ceci dans mon WinCB() :

Code : Tout sélectionner

  If GadgetID(#BUTTON_CF_SCROLL) = lParam
    Debug Message
  EndIf
mais à aucun moment le debug n'est pris en compte. Ca veut dire qu'on ne peut pas skinner les ScrollAreaGadget ???

Merci d'ores et déjà pour toutes vos réponses :P :D
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

La méthode pour résoudre ce genre de problème est la suivante:

Rechercher le handle de la fenêtre avec un spy.(Super macro par ex:)
A partir de là on se rend compte que le Handle retournée par la fonction:
Handle=ScrollAreaGadget(0, 10, 10,290,120, 375, 155, 30)
n'est pas celle que l'on souhaite, en fait c'est la fenêtre parent.


Retrouver le handle de la fenêtre fille avec la fonction FindWindowEx en lui indiquant comme paramètres le handle de la fenêtre parent et le nom de la classe de la fenêtre fille que le spy nous fournit.


Ensuite avec le handle de la fenêtre fille, on peut facilement changer sa couleur de fond avec la fonction suivante:

hbrush=CreateSolidBrush_(RGB(255,0,0))
SetClassLong_(handle_fille,#GCL_HBRBACKGROUND,hbrush)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Ce qui donne en reprenant un exemple de Pure:

Code : Tout sélectionner

If OpenWindow(0,0,0,305,140,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"ScrollAreaGadget") And CreateGadgetList(WindowID(0))
  Handle=ScrollAreaGadget(0, 10, 10,290,120, 375, 155, 30)
  handle_fille=FindWindowEx_(Handle,0,"PureScrollAreaChild","")
  hbrush=CreateSolidBrush_(RGB(255,0,255))
  SetClassLong_(handle_fille,#GCL_HBRBACKGROUND,hbrush)
  
  ButtonGadget  (1, 10, 10,230, 30,"Button 1")
  ButtonGadget  (2, 50, 50,230, 30,"Button 2")
  ButtonGadget  (3, 90, 90,230, 30,"Button 3")
  TextGadget    (4,130,130,230, 20,"This is the content of a ScrollAreaGadget!",#PB_Text_Right)
  CloseGadgetList() 
  SetWindowTitle(0,Str(Handle)+"   "+Str(handle_fille))
  Repeat 
    Select WaitWindowEvent() 
      Case  #PB_Event_CloseWindow 
        End 
      Case  #PB_Event_Gadget 
        Select EventGadgetID()
          Case 1
            MessageRequester("Info","Le bouton 1 a été pressé !",#PB_MessageRequester_Ok)
          Case 2
            MessageRequester("Info","Le bouton 2 a été pressé !",#PB_MessageRequester_Ok)
          Case 3
            MessageRequester("Info","Le bouton 3 a été pressé !",#PB_MessageRequester_Ok)
        EndSelect
    EndSelect 
  ForEver 
EndIf
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Merci Nico pour cet exemple.
(J'étais en train de chercher depuis toute à l'heure sur des sites dont la plupart n'étaient pas sur PB).
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

C'est bon j'ai réussit (pas trop de mérite, car l'exemple était suffisament clair)...

Je vais regarder pour skinner les accenseurs du ScrollAreaGadget et les boutons. Ca doit être la même démarche je pense.

Merci bien en tout cas !!! :D
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Répondre