Page 1 sur 1

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

Publié : dim. 25/avr./2004 12:15
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 :)

Publié : dim. 25/avr./2004 17:26
par Chris
Je viens de remarquer qu'un TextGadget() s'affiche sans problème!

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

Chris :)

Publié : lun. 26/avr./2004 14:12
par Backup
pour la question ya un piege !! :D

Publié : lun. 26/avr./2004 14:57
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 ;).

Publié : lun. 26/avr./2004 15:04
par Chris
YESSSSS...... CA MARCHE!!! :lol:

Merci Fred :)

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

Chris :)