PureBasic

Forums PureBasic
Nous sommes le Mar 18/Juin/2013 6:08

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 14 messages ] 
Auteur Message
 Sujet du message: Probleme d'event avec openWindowScreen
MessagePosté: Sam 04/Fév/2012 1:06 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5324
Je suis en train de bosser sur mon soft d'arvertisseur d'évènements.

J'ai donc une fenêtre principale comprenant des gadgets donc un panelgadget.
Dans l'onglet 0 (le 1er onglet) de ce panel, j'ai un OpenWindowScreen() qui aura pour but de présenter les évènements du jour avec des animations.

J'ai toujours un soucis par rapports aux réactions du logiciels pendant une anim ou à la fin de celle-ci.
Je m'embrouille probablement dans la gestion des event. Perte du curseur souris ...
Ou faut-il obligatoirement passer par un thread si je souhaite naviguer dans les onglets alors que l'anim se joue ?

Des qu'un code commence à être volumineux ou multi-fenêtré je perds la boule. :?
Pourtant j'ai essayé d'être "propre" dans son agencement.

Pour tester, lancer le programme (avec le debug) et cliquez sur le 1er onglet.

Archive avec code + datas : ICI
Code principale seul ci dessous

Code:
; Tête de Linotte
; Gestionnaire d'évènements type "pense-bête"
; Par Ar-S // http://ldvmultimedia.com / Débuté le 1 Fev 2012

  ;---------------------------------------------------------------------
  ;- ** INITIALISATION / ENUMERATION
  ;---------------------------------------------------------------------

InitSprite()
InitKeyboard()
InitMouse()

UseJPEGImageDecoder()
UsePNGImageDecoder()

;{ Fenêtre
Enumeration
  #w0
EndEnumeration
;}

;{ Menu
Enumeration
  #Menu_w0
EndEnumeration
;}

;{ Menu/Toolbar items
Enumeration
 
 
EndEnumeration
;}

;{ Gadgets
Enumeration
  #IMG_TITRE
  #Panel
  #Calendar
  #Txt_Categorie
  #Categorie
  #CHK_Annuel
  #Chk_jours
  #CHK_Semaine
  #CHK_Mois
  #CHK_annee
  #Txt_EVENT
  #EVENT_TITRE
  #Txt_Descript_Event
  #AFF
  #BT_AIDE_APROPOS
  #BT_PREF
  #BT_Don
  #Descript_Event
  #BT_AJOUT_EVENT
  #PREF_Demarrage_Auto
  #IMG_TRAIT
  #PREF_PLAN
  #IMG_TRAIT2
  #PREF_SON
  #TXT_Liste_Event
  #ListEvent
  #BT_MODIF_EVENT
  #BT_CLONER_EVENT
  #BT_SUP_EVENT
  #IMG_TRAIT3
  #TXT_Gerer_cat
  #ListCategorie
  #CATEGORIE_MOD
  #BT_AJOUT_CAT
  #BT_SUPPR_CAT
EndEnumeration
;}

;{ Fonts
Enumeration
  #Font_Normal
  #Font_Gras
EndEnumeration
;}

;{ Images
Enumeration
  #ID_IMG_TITRE
  #ID_IMG_BT_Apropos
  #ID_IMG_BT_PREF
  #ID_BT_DON
  #ID_IMG_TRAIT
  #ID_IMG_TRAIT2
  #ID_IMG_Trait3
EndEnumeration
;}

;{ Sprites
Enumeration
  #Balle
EndEnumeration
;}

  ;---------------------------------------------------------------------
  ;- ** VARIABLES / CONSTANTES
  ;---------------------------------------------------------------------

Global Path$ = GetCurrentDirectory()
Global FontNormal = LoadFont(#Font_Normal, "Microsoft Sans Serif", 11, #PB_Font_HighQuality)
Global FontGras = LoadFont(#Font_Gras, "Microsoft Sans Serif", 12, #PB_Font_Bold|#PB_Font_HighQuality)

Define.l x, y, T, FloatingMedium.f, cnt

Global MainWin, L = 390, H = 292
Global.i Mouvement, Direction
Global.c vitesse = 3
Global.b Droite = vitesse, gauche = -vitesse


#COULFOND = $F0DFD9

  ;---------------------------------------------------------------------
  ;- ** INCLUDES
  ;---------------------------------------------------------------------

XIncludeFile ("datas.pbi")
XIncludeFile ("tooltip_proce.pbi")




  ;---------------------------------------------------------------------
  ;- ** PROCEDURES
  ;---------------------------------------------------------------------

Procedure AnimeMessage()
  ; Message d'alerte animé
 
  Direction = Droite
  Mouvement = 0
  GO = 1
  Bleu = 0
  Vert = 0
 
  Repeat
    ExamineMouse()
    ExamineKeyboard()
   
    If GO = 1
      FlipBuffers()
     
      ClearScreen(RGB(0, Vert, Bleu))
     
     
      Mouvement + Direction
     
      StartDrawing(ScreenOutput())
        DrawText(Mouvement,H-20,"ALERTE ! ")
      StopDrawing()
     
     
      Debug "Mouvement : " + Str(Mouvement) ;-Test Mouvement
     
     
      Delay(10)
     
      If Mouvement > 333
        Direction = gauche
        cogne + 1
       
        Debug "Cogne : "+ Str(cogne) ;- Test cogne
       
      ElseIf Mouvement < 0
        Direction = Droite
        cogne + 1
       
        Debug "Cogne : "+ Str(cogne) ;- Test cogne
       
      EndIf
      Bleu + 1
      If Bleu > 254
        Bleu = 254
        Vert + 1
        If Vert > 128
          Vert = 128
        EndIf
      EndIf
     
      If cogne = 4
        ClearScreen(0)
        GO = 0
      EndIf
    EndIf

  Until  MouseButton(#PB_MouseButton_Left) Or GO = 0 Or KeyboardPushed(#PB_Key_Escape)
  ProcedureReturn 0
EndProcedure 
 



Procedure Parasyte()
  #filter = 0.2 
  #UpdateFreq = 100
 
  Depart = ElapsedMilliseconds()
  Repeat   
   
    FlipBuffers()
   
    StartDrawing(ScreenOutput())
      For y = 0 To H-1
        For x = 0 To L-1
         
          If Random(1)
            Plot(x,y,#Black)
           
          Else
           
            Plot(x,y,#White)
          EndIf
         
        Next
      Next
    StopDrawing()
   
   
    cnt + 1
    If cnt >= #UpdateFreq
      cnt = 0
    EndIf
    Delay(2)
   
  Until ElapsedMilliseconds() > Depart + 400
  ProcedureReturn 0
EndProcedure


  ;---------------------------------------------------------------------
  ;- ** PROGRAMME
  ;---------------------------------------------------------------------

  ;---------------------------------------------------------------------
  ;- ****** FENETRE PRINCIPALE *******
  ; ---------------------------------------------------------------------
MainWin = OpenWindow(#w0, 480, 258, 760, 443, "LDVM REMINDER", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
If MainWin = 0
  MessageRequester ("Erreur", "Impossible d'ourir la fenêtre, ce programme va se terminer",#MB_ICONERROR|#PB_MessageRequester_Ok)
  End
EndIf

 
    ; ---------------------------------------------------------------------
  ;- >>> MENU
  ; ---------------------------------------------------------------------
If CreateMenu(#Menu_w0, WindowID(#w0))
  MenuTitle("Gestion des évènements")
EndIf
 


  ; ---------------------------------------------------------------------
  ;- >>> GADGETS GENERAUX
  ; ---------------------------------------------------------------------
ImageGadget(#IMG_TITRE, 2, 0, 757, 76, CatchImage(#ID_IMG_TITRE, ?ID_IMG_TITRE))
IMG_TITRE_Tooltip = GadgetBalloonToolTip(#w0, #IMG_TITRE, "Tête de linotte ! Pour mémoriser tous vos évènements !")
StringGadget(#AFF, 3, 397, 610, 23, "Bienvenue sur Tête de Linotte !", #PB_String_ReadOnly)
ButtonImageGadget(#BT_AIDE_APROPOS, 668, 397, 27, 24, CatchImage(#ID_IMG_BT_Apropos, ?ID_IMG_BT_Apropos))
BT_AIDE_APROPOS_Tooltip = GadgetBalloonToolTip(#w0, #BT_AIDE_APROPOS, "A propos de tête de Linotte ?")
ButtonImageGadget(#BT_PREF, 700, 397, 27, 24, CatchImage(#ID_IMG_BT_PREF, ?ID_IMG_BT_PREF))
BT_PREF_Tooltip = GadgetBalloonToolTip(#w0, #BT_PREF, "Préférences")
ButtonImageGadget(#BT_Don, 730, 397, 27, 24, CatchImage(#ID_BT_DON, ?ID_BT_DON))
BT_Don_Tooltip = GadgetBalloonToolTip(#w0, #BT_Don, "Faire un Don !")
TextGadget(#TXT_Liste_Event, 5, 75, 348, 20, "Liste des évènements à venir", #SS_CENTERIMAGE)
ListViewGadget(#ListEvent, 5, 100, 350, 270, #PB_ListView_ClickSelect)
ButtonGadget(#BT_MODIF_EVENT, 5, 374, 120, 20, "Modifier l'évènement", #BS_FLAT)
BT_MODIF_EVENT_Tooltip = GadgetBalloonToolTip(#w0, #BT_MODIF_EVENT, "Modifier lévènement sélectionné")
ButtonGadget(#BT_CLONER_EVENT, 128, 374, 105, 20, "Cloner l'évènement", #BS_FLAT)
BT_CLONER_EVENT_Tooltip = GadgetBalloonToolTip(#w0, #BT_CLONER_EVENT, "Modifier lévènement sélectionné")
ButtonGadget(#BT_SUP_EVENT, 235, 374, 120, 20, "Supprimer l'évènement", #BS_FLAT)
BT_SUP_EVENT_Tooltip = GadgetBalloonToolTip(#w0, #BT_SUP_EVENT, "supprimer l'évènement sélectionné.")
 



  ; ---------------------------------------------------------------------
  ;- >>> PANEL
  ; ---------------------------------------------------------------------
PanelGadget(#Panel, 360, 76, 395, 319)
  ;- Onglet 1 (numero 0) :  Afficher le prochain évènement
  AddGadgetItem(#Panel, -1, "  Afficher le prochain évènement ")
 
 
 
 
 
 
 
 
  ;- Onglet 2 (numero 1) :  Ajouter un évènement
  AddGadgetItem(#Panel, -1, "Ajouter un évènement")
  CalendarGadget(#Calendar, 3, 0, 230, 164, Date(), #PB_Calendar_Borderless)
  TextGadget(#Txt_Categorie, 235, 5, 150, 20, "Choisissez une catégorie", #PB_Text_Center|#SS_CENTERIMAGE)
  ComboBoxGadget(#Categorie, 235, 27, 150, 20)
  Categorie_Tooltip = GadgetBalloonToolTip(#w0, #Categorie, "Choisissez la catégorie du futur évènement")
  CheckBoxGadget(#CHK_Annuel, 236, 52, 150, 20, "Avertir une fois")
  CheckBoxGadget(#Chk_jours, 236, 75, 150, 20, "Avertir tous les jours")
  CheckBoxGadget(#CHK_Semaine, 236, 97, 150, 20, "Avertir chaque semaine")
  CheckBoxGadget(#CHK_Mois, 236, 120, 150, 20, "Avertir chaque mois")
  CheckBoxGadget(#CHK_annee, 236, 142, 150, 20, "Avertir chaque année")
  TextGadget(#Txt_EVENT, 5, 165, 380, 20, "Titre de l'évenement (obligatoire)", #SS_CENTERIMAGE)
  StringGadget(#EVENT_TITRE, 2, 187, 384, 20, "", #ES_CENTER)
  EVENT_TITRE_Tooltip = GadgetBalloonToolTip(#w0, #EVENT_TITRE, "Incrivez ici le nom de l'évènement à venir")
  TextGadget(#Txt_Descript_Event, 5, 210, 380, 20, "Descriptif de l'évènement (*optionnel)", #SS_CENTERIMAGE)
  EditorGadget(#Descript_Event, 2, 233, 383, 40)
  Descript_Event_Tooltip = GadgetBalloonToolTip(#w0, #Descript_Event, "Ecrire le descriptif de l'évènement à venir.")
  ButtonGadget(#BT_AJOUT_EVENT, 2, 275, 385, 20, "Valider et enregistrer l'évènement")
 
 
 
  ;- Onglet 3 (numero 2) :  Préférences
  AddGadgetItem(#Panel, -1, "Préférences")
  CheckBoxGadget(#PREF_Demarrage_Auto, 10, 5, 375, 20, "Démarrer Tête de Linotte avec Windows")
  ImageGadget(#IMG_TRAIT, 7, 29, 375, 7, CatchImage(#ID_IMG_TRAIT, ?ID_IMG_TRAIT), #PB_Image_Border)
  CheckBoxGadget(#PREF_PLAN, 10, 40, 375, 20, "Laisser la fenêtre au 1er plan")
  ImageGadget(#IMG_TRAIT2, 7, 64, 375, 7, CatchImage(#ID_IMG_TRAIT2, ?ID_IMG_TRAIT), #PB_Image_Border)
  CheckBoxGadget(#PREF_SON, 10, 76, 375, 20, "Activer le son")
  ImageGadget(#IMG_TRAIT3, 8, 101, 375, 7, CatchImage(#ID_IMG_Trait3, ?ID_IMG_TRAIT), #PB_Image_Border)
  TextGadget(#TXT_Gerer_cat, 5, 120, 377, 20, "Gérer les catégories", #PB_Text_Center|#SS_CENTERIMAGE)
  ListViewGadget(#ListCategorie, 5, 147, 378, 120)
  StringGadget(#CATEGORIE_MOD, 5, 270, 245, 20, "", #ES_CENTER)
  ButtonGadget(#BT_AJOUT_CAT, 260, 270, 30, 22, "+")
  BT_AJOUT_CAT_Tooltip = GadgetBalloonToolTip(#w0, #BT_AJOUT_CAT, "Ajouter / Modifier une catégorie")
  ButtonGadget(#BT_SUPPR_CAT, 295, 270, 30, 22, "-")
  BT_SUPPR_CAT_Tooltip = GadgetBalloonToolTip(#w0, #BT_SUPPR_CAT, "Supprimer la catégorie ")
CloseGadgetList()
 
SetActiveGadget(#Panel)
 
  ; ---------------------------------------------------------------------
  ;- >>> FONTS
  ; ---------------------------------------------------------------------
  ; Les Fonts
SetGadgetFont(#Txt_Descript_Event, FontID(#Font_Normal))
SetGadgetFont(#TXT_Gerer_cat, FontID(#Font_Normal))
SetGadgetFont(#TXT_Liste_Event, FontID(#Font_Normal))
SetGadgetFont(#BT_AJOUT_CAT, FontID(#Font_Gras))
SetGadgetFont(#BT_SUPPR_CAT, FontID(#Font_Gras))
 
  ; ---------------------------------------------------------------------
  ;- >>> COULEURS GADGETS / WINDOW
  ; ---------------------------------------------------------------------
SetGadgetColor(#EVENT_TITRE,#PB_Gadget_BackColor,$FFF5D9)
SetGadgetColor(#AFF,#PB_Gadget_BackColor,$0)
SetGadgetColor(#AFF,#PB_Gadget_FrontColor,$FF80)
SetGadgetColor(#Descript_Event,#PB_Gadget_BackColor,$FFF5D9)
SetGadgetColor(#TXT_Liste_Event,#PB_Gadget_BackColor,#COULFOND)
SetGadgetColor(#TXT_Gerer_cat,#PB_Gadget_BackColor,#COULFOND)
SetGadgetColor(#CATEGORIE_MOD,#PB_Gadget_BackColor,#COULFOND)
SetWindowColor(#w0, #COULFOND)

  ;---------------------------------------------------------------------
  ;- ** BOUCLE PRINCIPALE
  ;---------------------------------------------------------------------

Repeat
  Select WindowEvent()
     
    Case #PB_Event_Gadget
      Select EventGadget()
         
        Case #Panel
         
          Select EventType()
            Case #PB_EventType_LeftClick
             
              Onglet = GetGadgetState(#Panel)
              Debug "Onglet : " +Str(Onglet+1)
             
             
          EndSelect
         
         
         
          If Onglet = 0 ; Si c'est l'ecran affichant la fenêtre 2D
           
            ; ---------------------------------------------------------------------
            ;- ****** SCREEN *******
            ; ---------------------------------------------------------------------
            OpenWindowedScreen(MainWin,362, 100, L, H, 0, 0, 0,#PB_Screen_NoSynchronization)
            cogne = 0
           
            ; ---------------------------------------------------------------------
            ;- >>> PARASYTES
            ; ---------------------------------------------------------------------
           
            If Parasyte() = 0
           
           
            ; ---------------------------------------------------------------------
            ;- >>> MESSAGE ANIME
            ; ---------------------------------------------------------------------
           
              AnimeMessage()
         
            EndIf
         
           
           
          ElseIf Onglet = 1
            If EventType() = #PB_EventType_LeftClick
              Debug "Clic 2"
            EndIf 
           
          ElseIf Onglet = 2
            If EventType() = #PB_EventType_LeftClick
              Debug "Clic 3"
            EndIf
           
          EndIf
         
         
         
         
        Case #Calendar
        Case #Categorie
        Case #CHK_Annuel
        Case #Chk_jours
        Case #CHK_Semaine
        Case #CHK_Mois
        Case #CHK_annee
        Case #EVENT_TITRE
        Case #AFF
        Case #BT_AIDE_APROPOS
        Case #BT_PREF
        Case #BT_Don
        Case #Descript_Event
        Case #BT_AJOUT_EVENT
        Case #PREF_Demarrage_Auto
        Case #PREF_PLAN
        Case #PREF_SON
        Case #ListEvent
        Case #BT_MODIF_EVENT
        Case #BT_CLONER_EVENT
        Case #BT_SUP_EVENT
        Case #TXT_Gerer_cat
        Case #ListCategorie
        Case #CATEGORIE_MOD
        Case #BT_AJOUT_CAT
        Case #BT_SUPPR_CAT
      EndSelect
     
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #w0
          CloseWindow(#w0)
          Break
      EndSelect
  EndSelect
ForEver
;
;}


_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
 Sujet du message: Re: Probleme d'event avec openWindowScreen
MessagePosté: Sam 04/Fév/2012 9:34 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 13075
pourquoi tu fais :

Code:
Case #Panel
         
          Select EventType()
            Case #PB_EventType_LeftClick
             
              Onglet = GetGadgetState(#Panel)
              Debug "Onglet : " +Str(Onglet+1)


tu récupere le clique gauche sur un panel ?

ça sert a rien ! :)
un panel te renverra toujours son numero du panel actilf grace a Onglet = GetGadgetState(#Panel)
t'as pas besoin de recuperer le clique souris pour ça ! ;)

pour le reste , tu peux utiliser un tread uniquement si tu veux que l'anim se poursuive alors que tu n'es plus dans l'onglet actif
sinon , c'est pas obligé , simplement lorsque tu ne sera pas sur l'onglet , ben ton anim ne marchera pas ,tant que t'es pas a nouveau dessus ...
(donc dans son Case)

je ne peux pas tester le code que tu as mis, il manque trop de truc..
je te dis donc tout ça de, visu ;)

pour le moment , tu peux virer

Code:
Select EventType()
            Case #PB_EventType_LeftClick

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Probleme d'event avec openWindowScreen
MessagePosté: Sam 04/Fév/2012 10:03 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5324
Yop. En fait c'est une habitude que j'ai pris par rapport à certain gadgets qui font apparaitre 2 fois la donnée dans le debug.

Regarde dans le debug lorsque tu joues avec les panels :
Si on ne met pas le EventType clique gauche, l'info est doublée !

Code:
;{- Enumerations / DataSections
;{ Windows
Enumeration
  #Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
  #Panel_0
  #Panel1
EndEnumeration
;}
;}
Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 465, 206, 280, 257, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
       PanelGadget(#Panel_0, 5, 10, 200, 85)
        ; Tab #1
        AddGadgetItem(#Panel_0, -1, "Tab #1")
        ; Tab #2
        AddGadgetItem(#Panel_0, -1, "Tab #2")
      CloseGadgetList()
      PanelGadget(#Panel1, 5, 120, 200, 95)
        ; Tab #1
        AddGadgetItem(#Panel1, -1, "Tab #1")
        ; Tab #2
        AddGadgetItem(#Panel1, -1, "Tab #2")
     
  EndIf
EndProcedure

OpenWindow_Window_0()

;{- Event loop
Repeat
  Select WaitWindowEvent()
      ; ///////////////////
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Panel_0
          Debug "Sans EventType"
          Debug GetGadgetState(#Panel_0)
         
         
        Case #Panel1
          If EventType() = #PB_EventType_LeftClick
            Debug "Avec EventType !"
            Debug GetGadgetState(#Panel1)
           
          EndIf
         
           
         
      EndSelect
      ; ////////////////////////
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #Window_0
          CloseWindow(#Window_0)
          Break
      EndSelect
  EndSelect
ForEver
;
;}


_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
 Sujet du message: Re: Probleme d'event avec openWindowScreen
MessagePosté: Sam 04/Fév/2012 10:11 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 13075
oui normal , puisque tu as le #WM_LBUTTONDOWN et le #WM_LBUTTONUP

mais quoiqu'il en soit la variable "onglet" aura bien la valeur de ton onglet
celle -ci est simplement récupéré par le click gauche , et son relâchement ;)



Code:
;{- Enumerations / DataSections
;{ Windows
Enumeration
   #Window_0
   #Panel_0
EndEnumeration
;}
;}
Procedure OpenWindow_Window_0()
   If OpenWindow(#Window_0, 450, 200, 280, 257, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
      PanelGadget(#Panel_0, 25, 35, 210, 185)
      ; Tab #1
      AddGadgetItem(#Panel_0, -1, "Tab #1")
      ; Tab #2
      AddGadgetItem(#Panel_0, -1, "Tab #2")
      
   EndIf
EndProcedure

OpenWindow_Window_0()

;{- Event loop
Repeat
   Select WaitWindowEvent()
      ; ///////////////////
      Case #PB_Event_Gadget
      Select EventGadget()
         Case #Panel_0
         onglet=GetGadgetState(#Panel_0)
         debug onglet
      EndSelect
      ; ////////////////////////
      Case #PB_Event_CloseWindow
      Select EventWindow()
         Case #Window_0
         CloseWindow(#Window_0)
         Break
      EndSelect
   EndSelect
ForEver
;
;}

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Probleme d'event avec openWindowScreen
MessagePosté: Sam 04/Fév/2012 10:30 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 19/Fév/2011 12:46
Messages: 930
salut, j'ai regardé vite fait ton code.

Je pense que si c'est un "gros" projet, tu devrais encore plus séparer en petit fichier, ce serait plus facile de t'y retrouver.

J'ai remarqué plusieurs choses concernant tes problèmes :
- problème de souris : c'est lié à ExamineMouse(). Je pense que tu devrais l'enlever, il ne sert à rien (enlève aussi le mousebutton() au niveau du until de ta 1ère procedure.
- ensuite ton programme se bloque et pour cause : tu lances une procedure avec un repeat, donc, le programme se "bloque" dans cette procédure, jusqu'à ce que tu en sorte.
Il faut mieux faire ton affichage dans ta boucle principale, et éviter un repeat à l'intérieur d'un repeat dans ton cas, si ce n'est pas souhaité.

Par contre, tu devrais utiliser un canvas plutôt qu'un openwindowscreen(), ça t'éviterait ce genre de problème (souris, boucle dans une boucle..).

Je t'ai un petit zip d'exemple, en modifiant ton code, j'ai ça vite fait, juste pour que tu aies une idée générale de l'organisation, après à toi de voir comment tu veux arranger ça :
http://blendman.free.fr/dev/pb/ars/linotte_ars.zip

En espérant que ça te soit utile.

_________________
http://blendman.blogspot.com/


Haut
 Profil  
 
 Sujet du message: Re: Probleme d'event avec openWindowScreen
MessagePosté: Sam 04/Fév/2012 10:36 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5324
Oui certes mais comme je disais, à la base, c'est une habitude (qui ne gêne pas) que j'ai pris, surtout pour les Combo avec des listes.
Pour revenir à mon problème ce n'est pas ce qui me gêne ^^

Une question me taraude.

Dans la création de ma fenêtre principale, la logique voudrait que je la crée dans ce sens :

CreationFenetre
> AjoutGadgets
> AjoutPanel
>> Ongle1
>>> CreationScreen
>>Onglet2
etc..

Hors si je fais ça le screen s'ouvre et apparait, peut importe les onglets, c'est l'anarchie.
J'ai donc procédé comme dans mon code en début de topic.

Est-ce la bonne marche à suivre ?

_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
 Sujet du message: Re: Probleme d'event avec openWindowScreen
MessagePosté: Sam 04/Fév/2012 10:42 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5324
blendman a écrit:
salut, j'ai regardé vite fait ton code.

Je pense que si c'est un "gros" projet, tu devrais encore plus séparer en petit fichier, ce serait plus facile de t'y retrouver.

J'ai remarqué plusieurs choses concernant tes problèmes :
- problème de souris : c'est lié à ExamineMouse(). Je pense que tu devrais l'enlever, il ne sert à rien (enlève aussi le mousebutton() au niveau du until de ta 1ère procedure.
- ensuite ton programme se bloque et pour cause : tu lances une procedure avec un repeat, donc, le programme se "bloque" dans cette procédure, jusqu'à ce que tu en sorte.
Il faut mieux faire ton affichage dans ta boucle principale, et éviter un repeat à l'intérieur d'un repeat dans ton cas, si ce n'est pas souhaité.

Par contre, tu devrais utiliser un canvas plutôt qu'un openwindowscreen(), ça t'éviterait ce genre de problème (souris, boucle dans une boucle..).

Je t'ai un petit zip d'exemple, en modifiant ton code, j'ai ça vite fait, juste pour que tu aies une idée générale de l'organisation, après à toi de voir comment tu veux arranger ça :
http://blendman.free.fr/dev/pb/ars/linotte_ars.zip

En espérant que ça te soit utile.


Merci d'avoir pris du temps pour me répondre.
faut vraiment que j'étudie ce nouveau Canvas vu sa puissance... Je vais regarder tes modifs avec soin. Merci :)

_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
 Sujet du message: Re: Probleme d'event avec openWindowScreen
MessagePosté: Sam 04/Fév/2012 11:14 
Hors ligne

Inscription: Mer 14/Sep/2011 16:59
Messages: 344
Je pense aussi qu'un canvas serait plus adapté sinon j'ai un léger mieux en ajoutant CloseScreen() dans Procedure AnimeMessage() après ProcedureReturn 0

Une solution de facilité serait de lancer un avi ou un gif animé.

Mesa.


Haut
 Profil  
 
 Sujet du message: Re: Probleme d'event avec openWindowScreen
MessagePosté: Sam 04/Fév/2012 11:26 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 13075
++1 :)

tu veux mettre un screen dans un onglet, le mieux serai de mettre un canvas (qui est un gadget_screen)
ce sera beaucoup plus simple :)
la gestion de la souris est comprise dedans en plus ;)

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Probleme d'event avec openWindowScreen
MessagePosté: Sam 04/Fév/2012 11:30 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5324
Oui oui je passe au Canvas :P sa gestion à l'air bien moins chiant que l'openscreen classique.
Pour le moment je me fais un rendu 3D de Ciel (avec VUE d'Esprit) en image pour les futures annonces du logiciels.


---edit----

Presque 7 min pour le rendu en 640x480... J'avais oublié à quel point il est lent ce moteur de rendu (même si c'est beau)..
Ciel v0.1
Image

_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
 Sujet du message: Re: Probleme d'event avec openWindowScreen
MessagePosté: Sam 04/Fév/2012 11:54 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 13075
Ar-S a écrit:
Presque 7 min pour le rendu en 640x480... J'avais oublié à quel point il est lent ce moteur de rendu (même si c'est beau)..
Ciel v0.1


c'est pas plutot ton bousin qui rame ? :mrgreen: :mrgreen: :lol:

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Probleme d'event avec openWindowScreen
MessagePosté: Sam 04/Fév/2012 12:12 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5324
Voilà Monsieur à un i7 alors il crane :mrgreen: (t'as bien raison)
Sans rire, pour avoir brassé sur pas mal de soft 3D, VUE est vraiment incomparablement plus lent que ses cousins.

3DS avec un rendu MentalRay est bien plus rapide... Mais bien plus complexe pour générer des paysages.
(Faut dire que VUE permet des trucs de dingue. Créer une foret avec nuage et vent faisant bouger tout ça. (mais là vaut mieux un PC pour surfer et un qui génèrera le rendu ^^)

_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
 Sujet du message: Re: Probleme d'event avec openWindowScreen
MessagePosté: Sam 04/Fév/2012 13:15 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 13075
je testai Vue d'esprit , il y a fort longtemps nous le trouvions dans certains magasine dédié au images
(depuis le Net, je n’achète plus de press Papier..)

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Probleme d'event avec openWindowScreen
MessagePosté: Sam 04/Fév/2012 17:15 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5324
J'avais acheté la V4, il doivent en être à la 9 ou plus... M'en cague.. pour les rares fois ou je m'en sert..

_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 14 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye