Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2871 connectés 

  FORUM HardWare.fr
  Programmation

  [c++bder] capture mouvement(pas position) souris

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c++bder] capture mouvement(pas position) souris

n°203454
farib
Posté le 27-08-2002 à 22:36:04  profilanswer
 

pour mon tetris en opengl, j'implémente une fonction permettant de faire bouger la caméra au moyen de la souris
 
 
je souhaite avoir le comportement suivant poru ma souris  
 
*boutons pas appuyés => curseur normal, la souris sert a sélectionner les fenetres
 
*boutons gauche appuyé, le curseur disparait, et le mouvement de la souris fait bouger la caméra, a la manière d'un quake-like;
 
 
je procede comme suit

Code :
  1. //dans la déclaation de Form1
  2.         bool EtatCurseur ;
  3.         TPoint Previous ;
  4. void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
  5.       TShiftState Shift, int X, int Y)
  6. {
  7.        EtatCurseur = false ;
  8.        ShowCursor(false);
  9.         Previous.x = X;
  10.         Previous.y = Y ;
  11. }
  12. //---------------------------------------------------------------------------
  13. void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
  14.       TShiftState Shift, int X, int Y)
  15. {
  16.         EtatCurseur = true ;
  17.        ShowCursor(true);
  18. }
  19. //---------------------------------------------------------------------------
  20. void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
  21.       int X, int Y)
  22. {
  23. if (!EtatCurseur)
  24. {
  25.         Tetris->BougerCamera(rDroit,X-Previous.x);
  26.         Tetris->BougerCamera(rHaut,Y-Previous.y);
  27.        Previous.x=X ; Previous.y=Y;
  28. }
  29. }
  30. //---------------------------------------------------------------------------


 
ca marche , masi le prob c'est que la souris reste "bloquée au bord de l'écran", je peux pas fiare bouger ma souris tres largement, comme dans un doomlike ouje doi même soulever physiquement ma souris pour lui faire faire de plus amples mouvement
 
d'ailleurs, quand je relache le bouton, le curseur est au bord de l'écran c'était odnc bien celui ci qui bloquait ma souris
 
 
j'ai donc fait
 

Code :
  1. void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
  2.       int X, int Y)
  3. {
  4. if (!EtatCurseur)
  5. {
  6.         Tetris->BougerCamera(rDroit,X-Previous.x);
  7.         Tetris->BougerCamera(rHaut,Y-Previous.y);
  8.       TPoint Bidule(Previous.x,Previous.y);
  9.         Bidule = ClientToScreen(Bidule);
  10.        SetCursorPos(Bidule.x,Bidule.y);
  11. }
  12. }


 
pour que le curseur reste au centre, mais ca marche pas, c'est foireux, et ca me fais même louper le timer ! :D
 
bref, si vous avez des idées pour faire se comporter ma souris comme une souris de quaker, je suis preneur  
 
ps : evitter directinput :D
 
mélanger direct x et opengl a la sauce c++ builder c tordu ;)


Message édité par farib le 27-08-2002 à 22:38:49
mood
Publicité
Posté le 27-08-2002 à 22:36:04  profilanswer
 

n°203538
Pitounet
Posté le 28-08-2002 à 01:42:45  profilanswer
 

Tu devrais regarder du coté de la fonction SetCapture().
Je crois que c'est ta solution.

n°203546
HelloWorld
Salut tout le monde!
Posté le 28-08-2002 à 05:09:42  profilanswer
 

En effet, une fenetre ne recoit les mouvements de la souris que si celle-ci lui passe dessus ...
Il faut donc qu'elle "capture" la souris (les autres fenetres ne recoivent alors plus aucun message de souris, meme si elle passe dessus).
Donc quand le joueur clique sur le bouton dans ta fenetre, tu capture la souris.
Une fois le bouton relache, tu libere la capture.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°203632
farib
Posté le 28-08-2002 à 10:41:24  profilanswer
 

nan mon pb c'est que la souris elle est bloquée par l'écran (en plus de qu'elle sort de la fenetre) c'est pour cela quez j'ai essayé de faire avec un setcursorpos

n°204270
farib
Posté le 28-08-2002 à 21:32:24  profilanswer
 

up
 
http://www.developpez.net/forums/viewtopic.php?t=29187
 
aussi


Message édité par farib le 28-08-2002 à 21:52:04

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [c++bder] capture mouvement(pas position) souris

 

Sujets relatifs
[c++bder] pression touches multiples && capture mouvement souris[C++/MFC] Empêcher la souris de sortir d'un CRect [RESOLU]
[BCB/delphi] modifier la position de la sourisposition dune balise A en px dans l'ecran
[vb] problème avec ma roulette de souris[JS] description au passage de la souris
[Calques] Help ! La position relative me decale tout ! 
Plus de sujets relatifs à : [c++bder] capture mouvement(pas position) souris


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR