[resolu][builder] evenement onmousexxx && fenetre opengl

evenement onmousexxx && fenetre opengl [resolu][builder] - Programmation

Marsh Posté le 26-08-2002 à 19:05:20    

voila, pour mon mini jeu, ma souris sert a faire bouger la caméra lorsqu'on la bouge avec clic gauche enfoncée...
 
 
 
pour faire cela, j'ai donc fait un évenement onmousedown, lorsque la souris est clickée sur la fenetre opengl, mais c'est inhibé et n'a aucun effet....
 
des idées ?


Message édité par farib le 26-08-2002 à 23:59:03
Reply

Marsh Posté le 26-08-2002 à 19:05:20   

Reply

Marsh Posté le 26-08-2002 à 20:24:31    

tu devrais pas plutôt faire ça dans OnMouseMove, en vérifiant que le bouton est enfoncé ?  
if(Shift.Contains(mbLeft))...  ou un truc du genre


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 26-08-2002 à 20:27:54    

en fait c'est le OnMouseQQChose qui semble ne pas marcher, comme si l'opengl empechait le fenetre de savoir que c'est bien elle qui a le controle de la souris
 
et lorque je click, le programme ne plante pas  :D
 

Code :
  1. void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
  2.       TShiftState Shift, int X, int Y)
  3. {
  4.   1/0;     
  5. }
  6. //---------------------------------------------------------------------------

Reply

Marsh Posté le 26-08-2002 à 20:57:19    

heu quand tu fous 1/0 comme ca dans le code ça ne plante jamais hein :p
T'as juste un warning à la compilation


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 26-08-2002 à 22:58:29    

c t pour plaisanter....
 
 
mon code n'intercepte pas le mouvement de la souris, point final
 
 
http://perso.wanadoo.fr/pentium75/tetris
 
 
il capte bien les touches, masi l'opengl a l'air de foutre  une confusion dans la gestion fenetres souris....


Message édité par farib le 26-08-2002 à 23:03:05
Reply

Marsh Posté le 26-08-2002 à 23:46:14    

j'ai identifié le pb
 

Code :
  1. void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
  2.       TShiftState Shift, int X, int Y)
  3. {
  4. Cursor = crNone ;
  5. }
  6. //---------------------------------------------------------------------------
  7. void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
  8.       TShiftState Shift, int X, int Y)
  9. {
  10. Cursor = crDefault;
  11. }
  12. //---------------------------------------------------------------------------


 
en fait, le curseur n'est pas remis à jour avant que le bouton ne remonte... ce qui fait que  mon curseur est toujours a l'écran et ne disparait jamais
 
 
le code suivant marche, masi en fonctionnant légèrement différemment
 

Code :
  1. void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
  2.       TShiftState Shift, int X, int Y)
  3. {
  4. Cursor = Cursor == crNone ? crDefault: crNone;
  5. }
  6. //---------------------------------------------------------------------------
  7. void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
  8.       TShiftState Shift, int X, int Y)
  9. {
  10. //Cursor = crDefault;
  11. }
  12. //---------------------------------------------------------------------------


 
comment forcer un redraw ?


Message édité par farib le 26-08-2002 à 23:47:33
Reply

Marsh Posté le 26-08-2002 à 23:58:49    

jfais des topics tt seul  moi
:lol:
va savoir pourquoi, fo utiliser une fonction de l'api plutot
et la ca marche nickel....
 
 
la vie est un éternel mystère....

Code :
  1. void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
  2.       TShiftState Shift, int X, int Y)
  3. {
  4.         ShowCursor(false);
  5. }
  6. //---------------------------------------------------------------------------
  7. void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
  8.       TShiftState Shift, int X, int Y)
  9. {
  10.         ShowCursor(true);
  11. }
  12. //---------------------------------------------------------------------------

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed