ExamineMouse() : Problème, ou ça vient de moi ???

Programmation avancée de jeux en PureBasic
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

ExamineMouse() : Problème, ou ça vient de moi ???

Message par Chris »

J'ai une fenêtre, avec une partie qui contient un WindowedScreen(), et l'autre qui contient des boutons.

J'ai besoin d'utiliser la fonction ExamineMouse() pour utiliser la partie écran.
Le problème, c'est que ExamineMouse() empèche l'affichage des boutons dans la fenêtre, et que je suis obligé de relacher la souris pour qu'ils apparaissent.

Y a quelque chose qui m'échappe, là !! :?

Voilà un bout de code:

Code : Tout sélectionner

#Window = 0
#Width = 400
#Height = 300
  
;- Initialisation de DirectX
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
  MessageRequester("Erreur", "Impossible d'initialiser DirectX", 0)
  CloseWindow(#Window) : End
EndIf

;- Ouverture de la fenêtre et de l'écran
hwnd = OpenWindow(#Window, 0, 0, #Width, #Height, #PB_Window_TitleBar | #PB_Window_ScreenCentered, "ESC pour quitter, SPACE pour libérer la souris")
If CreateGadgetList(hwnd)
  ButtonGadget(10,150,270,100,20,"Bouton")
EndIf

OpenWindowedScreen(hwnd, 0, 0, 400, 260, 0, 0, 0)

;- Début de la boucle
Repeat
  ClearScreen(0, 0, 0) : ExamineKeyboard()
  ExamineMouse()    ; Si je décommente ExamineMouse(), le bouton n'apparaît plus
                    ; Je dois faire un ReleaseMouse(1) pour qu'il s'affiche

  If KeyboardPushed(#PB_Key_Space) : ReleaseMouse(1) : EndIf
  If KeyboardReleased(#PB_Key_Space) : ReleaseMouse(0) : EndIf
  
  Select WindowEvent() : EndSelect
  
  FlipBuffers()
  If KeyboardPushed(#PB_Key_Escape) : quit = 1 : EndIf
Until quit = 1
Chris :)
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Je viens de remarquer qu'un TextGadget() s'affiche sans problème!

L'affaire se corse! (Chef-Lieu ???)

Chris :)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

pour la question ya un piege !! :D
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

ta boucle boucle des evenements n'est pas conforme, il faut utiliser un While:Wend pour executer tous les evenements qui restent dans la file.

exemple:

Code : Tout sélectionner

 While WindowEvent() : Wend
Le Select WindowEVent() les executera 1 par 1, et vu qu'il y en a beaucoup, t'as pas fini ;).
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

YESSSSS...... CA MARCHE!!! :lol:

Merci Fred :)

Y a pas à dire, c'est vraiment toi le chef :wink:

Chris :)
Répondre