Page 1 sur 1
Probleme de fenetre
Publié : jeu. 22/févr./2007 2:08
par Del_Zur
Bonsoir a tous, je commence en pure basic et j'aurais deux questions ^^ (pour l'instant lol)
Déjà, pourquoi mettre des "if" avant chaque ligne? est-ce que ça sert a quelquechose ? meme les codes générés automatiquement en on Oo
et ma deuxieme question est :
Pourquoi mon programme ne fait qu'ouvrir une fenetre grise ??
Code : Tout sélectionner
Enumeration
#Menuprincipal
#nouvellepartie
#chargerpartie
#quitter
EndEnumeration
OpenWindow(#Menuprincipal, -74, 3, 1028, 712, "Menuprincipal", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_WindowCentered )
CreateGadgetList(WindowID(#Menuprincipal))
ButtonGadget(#nouvellepartie, 350, 250, 330, 40, "Nouvelle Partie", #PB_Button_Default | #PB_Button_Toggle)
ButtonGadget(#chargerpartie, 350, 300, 330, 40, "Charger Partie (indisponible)", #PB_Button_Default | #PB_Button_Toggle)
ButtonGadget(#quitter, 350, 350, 330, 40, "Quitter le jeu", #PB_Button_Default | #PB_Button_Toggle)
Delay(5000)
voila merci a tous !
Re: Probleme de fenetre
Publié : jeu. 22/févr./2007 4:16
par RegisLG
Del_Zur a écrit :pourquoi mettre des "if" avant chaque ligne? est-ce que ça sert a quelquechose ? meme les codes générés automatiquement en on Oo
Avant chaque ligne hmm c'est un peu exagéré. Je présume que les "If" auxquels tu fais allusion sont ceux qui testent les codes retour des fonctions d'ouverture de fenetre, de création de gadgetlist etc... pour s'assurer que ces fonctions se sont réalisées avec succès avant de continuer à utiliser ces éléments.
Pourquoi mon programme ne fait qu'ouvrir une fenetre grise ??
Tout simplement parce que tu rends la main au système avec ton instruction "Delay" alors que tes boutons n'ont pas encore eu le temps de s'afficher.
Remplace ton "Delay" par :
Code : Tout sélectionner
Repeat
event=WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
et tu obtiendras ce que tu souhaites.
Re: Probleme de fenetre
Publié : jeu. 22/févr./2007 12:22
par Backup
RegisLG a écrit :Tout simplement parce que tu rends la main au système avec ton instruction "Delay"
oui le Delay en purebasic est en fait comparable a "DOEVENTS" de VisualBasic

Publié : jeu. 22/févr./2007 13:00
par Del_Zur
Merci a toi ^^
sinon j'ai une autre question:
comment peut on faire pour que le programme reconnaisse un clic sur un bouton, enfin que ça fasse quelquechose !
est-ce qu'un :
suffit ?
ah au fait, pourquoi une fois enfonçé, il ne ressort pas ? (le bouton bien sur ^^')
REmerci d'avance ^^
Publié : jeu. 22/févr./2007 13:17
par Backup
je te conseille d'utiliser le visual designer !!
il te permet (dans les options) de generer la boucle des events !
de cette façon tu comprendra mieux un code type !
car une fois que tu aura dessiné l'interface, et que tu aura generer le code avec la boucle d'event, tout te sera beaucoups plus clair !:D
voici un exemple typique generé par le designer
; PureBasic Visual Designer v3.95 build 1485 (PB4Code)
;- Window Constants
;
;- Gadget Constants
;
Enumeration
#Window_0
#Button_ok
#Text_0
EndEnumeration
Procedure Open_Window_0()
If OpenWindow ( #Window_0 , 327, 98, 346, 310, "New window ( 0 )" , #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateGadgetList ( WindowID ( #Window_0 ))
ButtonGadget ( #Button_ok , 60, 250, 80, 30, "ok" )
TextGadget ( #Text_0 , 50, 40, 240, 20, "voici un exemple" , #PB_Text_Center )
EndIf
EndIf
EndProcedure
Open_Window_0()
Repeat ; Start of the event loop
Event = WaitWindowEvent () ; This line waits until an event is received from Windows
WindowID = EventWindow () ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadget () ; Is it a gadget event?
EventType = EventType () ; The event type
;You can place code here, and use the result as parameters for the procedures
If Event = #PB_Event_Gadget
If GadgetID = #Button_ok
MessageRequester ( "Hello" , "le bouton est appuyé" , #PB_MessageRequester_Ok )
EndIf
EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
;
Publié : jeu. 22/févr./2007 13:41
par Del_Zur
merci !
mais je suis pas sur de très bien comprendre ces lignes :
Code : Tout sélectionner
WindowID = EventWindow ()
GadgetID = EventGadget ()
EventType = EventType ()
peut tu me les expliquer en détails ?
merci ^^
Publié : jeu. 22/févr./2007 14:01
par Backup
tu met ton curseur sur la fonction que tu veux connaitre, puis tu appuis sur la touche F1
cela aura pour effet d'appeler la Doc, qui te donnera tout les renseignement necessaire

Publié : jeu. 22/févr./2007 14:12
par Del_Zur
ah ouais jsavais pas ça ^^
mais j'ai encore une question ( j'en aurai toute la journée ^^)
j'ai écris du texte comme ça :
Code : Tout sélectionner
If Event = #PB_Event_Gadget
If GadgetID = #nouvellepartie
Open_feuillepersonnage()
ElseIf GadgetID = #quitter
Event=#PB_Event_CloseWindow
ElseIf GadgetID = #chargerpartie
StartDrawing(WindowOutput(#Menuprincipal))
DrawText(400,300,"J'ai dit que c'était pas disponible !",(RGB(0,0,0)),(RGB(255,255,255)))
StopDrawing()
EndIf
mais je veux qu'il s'envele au bout de deux secondes, c'est quelle commande qu'il faut?
merci ^^
Publié : jeu. 22/févr./2007 16:43
par bernard13
Pure form de gnozal est encore meilleur
Publié : jeu. 22/févr./2007 20:41
par Del_Zur
Heinnn ?
Publié : lun. 26/févr./2007 5:30
par venom
salut Del_Zur
voici mon exemple car le tien ne fonctionne pas chez moi
Code : Tout sélectionner
;- Window Constants
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
Enumeration
#Text_0
EndEnumeration
;- police de caractère
Global FontID1
FontID1 = LoadFont(1, "Comic Sans MS", 14, #PB_Font_Bold)
;- on crée la fenetre
If OpenWindow(#Window_0, 0, 0, 410, 50, "Exemple", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_TitleBar )
;- on crée la liste de gadgets
If CreateGadgetList(WindowID(#Window_0))
;-on crée le gadget texte
TextGadget(#Text_0, 10, 10, 390, 30, "Ce texte dissparaitera dans 3 secondes")
SetGadgetFont(#Text_0, FontID1)
Delay(1000);- sa décompte 1 seconde car 1 s = 1000 ms ;)
TextGadget(#Text_0, 10, 10, 390, 30, "Ce texte dissparaitera dans 2 secondes")
SetGadgetFont(#Text_0, FontID1)
Delay(1000)
TextGadget(#Text_0, 10, 10, 390, 30, "Ce texte dissparaitera dans 1 secondes")
SetGadgetFont(#Text_0, FontID1)
Delay(1000)
TextGadget(#Text_0, 10, 10, 390, 30, "")
EndIf
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget()
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow ;- on ferme la fenetre avec la croix rouge