souris et crash application

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Uhuru
Messages : 15
Inscription : jeu. 07/avr./2016 21:44

souris et crash application

Message par Uhuru »

Je suis sur la version 5.42 LTS en 32 bits sous Windows 7

J'ai une application qui tourne en fenetré. Si je passe ma souris windows par dessus l'application, mon curseur devient le curseur 'en traitement'
si je clique une fois DANS ma fenetre, l'application plante totalement comme si le click bloquait le 'repeat' ...

Vous avez déjà constaté cela ?
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: souris et crash application

Message par Ar-S »

Tu peux surement entrainer ce genre de réaction avec une boucle mal foutue qui ne laisse pas souffler le proce..
Si tu utilises un waitwindowsevent(), essaye déjà de mettre waitwindowsevent(20) pour voir si ça change quelque chose.
Sans code on ne pourra pas t'aider plus que ç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
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: souris et crash application

Message par Marc56 »

Si l'application est exécutée dans l'IDE avec le debogueur activé tu devais avoir un message d'erreur au moment du crash.
Uhuru
Messages : 15
Inscription : jeu. 07/avr./2016 21:44

Re: souris et crash application

Message par Uhuru »

je l'execute bien depuis l'IDE avec debogueur activé mais pas de message sauf

[14:12:57] Waiting for executable to start...
[14:12:57] Executable type: Windows - x86 (32bit, Unicode)
[14:12:57] Executable started.
[14:13:38] The debugged executable quit unexpectedly.

Je n'utilise pas non plus waitwindowsevent(). C'est juste un screen avec une boucle qui affiche un starfield.

Je pense effectivement plus à une boucle mal fichue, je vais chercher un peu avant de poser le code ici. En tout cas cela veut dire que techniquement ca ne devrait pas planter ;)
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: souris et crash application

Message par Marc56 »

- Place un point d'arrêt (F9) au début ou à l'endroit le plus suspect.
- Lance le programme (F5)
- Dès qu'il s'arrête fait le avancer pas à pas (F8)

Regarde en même temps la fenêtre de debug « Voir les variables »

Ajoute des lignes Debug.

Pour tout ce qui est créé dynamiquement par le programme, précède par un contrôle d'existance avec les fonctions Is...
Ex: If IsImage(#...) etc

:wink:
Uhuru
Messages : 15
Inscription : jeu. 07/avr./2016 21:44

Re: souris et crash application

Message par Uhuru »

Bon, rien à faire
Voici le code

Ca ouvre une fenetre, si je passe ma souris sur la fenetre, j'ai le pointeur qui tourne
Si je clique plusieurs fois (genre 20) de suite dans la fenetre sans bouger => crash

Code : Tout sélectionner

If InitSprite()=0:MessageRequester("Oops!","Video could not be initialized, quitting!"):End:EndIf
If InitKeyboard()=0:MessageRequester("Oops!","Keyboard could not be initialized, quitting!"):End:EndIf

#scrx=640 ; résolution x de l'écran
#scry=480 ; résolution y de l'écran
#numstars=128 ; nombre d'étoiles par plan 
#starplan=3 ; nombre de plans

Structure StarVars
	star_x.l
	star_y.l
	star_speed.F
	star_colour.l
EndStructure

Global Dim Stars.StarVars(#starplan,#numstars)

If FS=0
	OpenWindow(1,0,0,#scrx,#scry,"",#PB_Window_ScreenCentered|#PB_Window_WindowCentered)
	OpenWindowedScreen(WindowID(1),0,0,#scrx,#scry)
Else
	OpenScreen(#scrx,#scry,32,"",#PB_Screen_WaitSynchronization,60)
EndIf

Procedure _2DStarfield()
For S=1 To #starplan
	For F=0 To #numstars-1
		Stars(S,F)\star_x=Random(#scrx)
		Stars(S,F)\star_y=Random(480,0)
	Next F
Next S
	
For F=0 To #numstars-1
	Stars(1,F)\star_speed=3 : Stars(1,F)\star_colour=RGB(64,64,64)
	Stars(2,F)\star_speed=4 : Stars(2,F)\star_colour=RGB(128,128,128)
	Stars(3,F)\star_speed=5 : Stars(3,F)\star_colour=RGB(255,255,255)
Next F
EndProcedure

Procedure bouge2DStarfield()

For S=1 To #starplan
	For F=0 To #numstars-1
		Box(Stars(S,F)\star_x,Stars(S,F)\star_y,1,1,Stars(S,F)\star_colour)
		Stars(S,F)\star_x-Stars(S,F)\star_speed
		If Stars(S,F)\star_x<=0:Stars(S,F)\star_x=#scrx:EndIf
	Next F
Next S

EndProcedure

_2DStarfield()   ; creation du starfield

Repeat 
  ExamineKeyboard()
  ClearScreen(RGB(0,0,0))
  If StartDrawing(ScreenOutput())    
    bouge2DStarfield()
  StopDrawing() 
  EndIf
 FlipBuffers()


Until KeyboardPushed(#PB_Key_Escape) 
Autre chose, si je mets FS à 1 pour passer en fullscreen, cette fois ci ca plante sur If StartDrawing(ScreenOutput())

[14:54:17] Waiting for executable to start...
[14:54:17] Executable type: Windows - x86 (32bit, Unicode)
[14:54:17] Executable started.
[14:54:18] [ERROR] debug.pb (Line: 60)
[14:54:18] [ERROR] Invalid memory access. (read error at address 0)

Le message du debugeur indique comme si il n'arrivait pas à ouvrir un fullscreen en 32 bits en 640 pa 480 (alors qu'en 800 par 600 ca marche ...)
Je veux bien croire que cette résolution est hasbeen mais quand même, un pilote refuserait d'ouvrir un 640 par 480 en 32 bits ?
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: souris et crash application

Message par Ar-S »

Tu as oublié d'initialiser la souris : InitMouse()
puis de l'examiner dans ta boucle : examinemouse()
~~~~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
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: souris et crash application

Message par falsam »

Il faut penser à vider la pile d’événement de la fenêtre.

Code : Tout sélectionner

If InitSprite()=0:MessageRequester("Oops!","Video could not be initialized, quitting!"):End:EndIf
If InitKeyboard()=0:MessageRequester("Oops!","Keyboard could not be initialized, quitting!"):End:EndIf

#scrx=640 ; résolution x de l'écran
#scry=480 ; résolution y de l'écran
#numstars=128 ; nombre d'étoiles par plan 
#starplan=3   ; nombre de plans

Structure StarVars
  star_x.l
  star_y.l
  star_speed.F
  star_colour.l
EndStructure

Global Dim Stars.StarVars(#starplan,#numstars)

FS = 0

If FS=0
  OpenWindow(1,0,0,#scrx,#scry,"",#PB_Window_ScreenCentered|#PB_Window_WindowCentered)
  OpenWindowedScreen(WindowID(1),0,0,#scrx,#scry)
Else
  OpenScreen(#scrx,#scry,32,"",#PB_Screen_WaitSynchronization,60)
EndIf

Procedure _2DStarfield()
  For S=1 To #starplan
    For F=0 To #numstars-1
      Stars(S,F)\star_x=Random(#scrx)
      Stars(S,F)\star_y=Random(480,0)
    Next F
  Next S
  
  For F=0 To #numstars-1
    Stars(1,F)\star_speed=3 : Stars(1,F)\star_colour=RGB(64,64,64)
    Stars(2,F)\star_speed=4 : Stars(2,F)\star_colour=RGB(128,128,128)
    Stars(3,F)\star_speed=5 : Stars(3,F)\star_colour=RGB(255,255,255)
  Next F
EndProcedure

Procedure bouge2DStarfield()
  
  For S=1 To #starplan
    For F=0 To #numstars-1
      Box(Stars(S,F)\star_x,Stars(S,F)\star_y,1,1,Stars(S,F)\star_colour)
      Stars(S,F)\star_x-Stars(S,F)\star_speed
      If Stars(S,F)\star_x<=0:Stars(S,F)\star_x=#scrx:EndIf
    Next F
  Next S
  
EndProcedure

_2DStarfield()   ; creation du starfield

Repeat 
  
  If FS = 0
    ;Vider la pile d'évenementy de la fenetre
    Repeat ;Evenement window
      Event = WindowEvent()
      
      Select Event    
        Case #PB_Event_CloseWindow
          End
      EndSelect  
    Until Event=0
    ;Fin du vidage
  EndIf
  
  ExamineKeyboard()
  ClearScreen(RGB(0,0,0))
  If StartDrawing(ScreenOutput())    
    bouge2DStarfield()
    StopDrawing() 
  EndIf
  FlipBuffers()
  
  
Until KeyboardPushed(#PB_Key_Escape) 
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: souris et crash application

Message par falsam »

Code précédent modifie si FullScreen :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Uhuru
Messages : 15
Inscription : jeu. 07/avr./2016 21:44

Re: souris et crash application

Message par Uhuru »

Super !! Merci Falsam :)

Au passage, un ExamineMouse() fait disparaitre le pointer. Normal ? PErso je veux qu'il reste et juste l'utiliser pour vérifier si y a un press button left

Autre chose, si j'utilise la routine musicplay, le fait de cliquer sur la fenetre bloque l'execution de tout SAUF de la musique, là aussi normal ?
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: souris et crash application

Message par Ar-S »

Du moment ou tu veux utiliser ta souris est sur un screen il te faut un curseur (sprite) et donc surveiller cette souris.
~~~~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
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: souris et crash application

Message par falsam »

Uhuru a écrit :un ExamineMouse() fait disparaitre le pointer. Normal ?
Oui. Remplace ton pointeur par un sprite. (Grillé par Ar-s)
Uhuru a écrit :si j'utilise la routine musicplay,
Utilise plutôt la library sound pour les jeux.
:arrow: http://www.purebasic.com/french/documen ... index.html
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Uhuru
Messages : 15
Inscription : jeu. 07/avr./2016 21:44

Re: souris et crash application

Message par Uhuru »

Ar-S a écrit :Du moment ou tu veux utiliser ta souris est sur un screen il te faut un curseur (sprite) et donc surveiller cette souris.
Merci beaucoup pour ton aide depuis le début du sujet :)
Uhuru
Messages : 15
Inscription : jeu. 07/avr./2016 21:44

Re: souris et crash application

Message par Uhuru »

falsam a écrit :
Uhuru a écrit :un ExamineMouse() fait disparaitre le pointer. Normal ?
Oui. Remplace ton pointeur par un sprite. (Grillé par Ar-s)
Uhuru a écrit :si j'utilise la routine musicplay,
Utilise plutôt la library sound pour les jeux.
:arrow: http://www.purebasic.com/french/documen ... index.html
Aheum, disons que je veux plus jouer un XM, me semblait que la lib était sur music et pas sur sound non ?
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: souris et crash application

Message par falsam »

Uhuru a écrit :Aheum, disons que je veux plus jouer un XM, me semblait que la lib était sur music et pas sur sound non ?
Tu as raison. je ne savais pas que tu souhaitais jouer des mods.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre