Souris

watashi_blao Messages postés 23 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 27 mars 2006 - 24 mars 2005 à 10:50
watashi_blao Messages postés 23 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 27 mars 2006 - 24 mars 2005 à 14:43
Je vous parle plus de gtk c'est promis .... mais maintenant que j'ai virer gtk de mon projet ... (que du win32 pour les fenêtre maintenant...)
bein je dois tout gérer à la main... donc...c'est pas facile facile...
j'ai une fenêtre qui gère l'opengl... jusque là tou va bien mais je veux gérer le déplacement de la scene par le biais des messages souris...
et là c'est pas cool....

je vous donne la partie de code qui doit me permettre de me déplacer selon l'axe des z dans ma scene... (glTranslate(1/2,1/2,4+depl);)

case WM_LBUTTONDOWN:
GetCursorPos(&oldpt);


mousing = true;
break;


case WM_LBUTTONUP:
if (mousing == true)
{
POINT pt;
GetCursorPos(&pt);
depl += ((pt.y - oldpt.y) / 740) * 10.0;
if (depl < 1.0) depl = 1.0;
if (depl > 120.0) depl = 120.0;
SendMessage(gl,WM_SIZE,0,0);
mousing = false;
}
break;


case WM_MOUSEMOVE:
if (mousing)
{
POINT pt;
GetCursorPos(&pt);
depl += ((pt.y - oldpt.y) / 740) * 10.0;
if (depl < 1.0) depl = 1.0;
if (depl > 120.0) depl = 120.0;
oldpt=pt;
SendMessage(gl,WM_PAINT,0,0);
}
break;

et bein ... y se passe rien....
alors là ... question -> pourquoi???
perso je vois pas ... mais c'est peut etre du à mon ignorance... alors je voyais plus que vous pour me sauver du desespoir grandissant qui m'envahit petit à petit...

2 réponses

watashi_blao Messages postés 23 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 27 mars 2006
24 mars 2005 à 11:44
ouaip finalement j'ai trouvé ... en bidouillant à max...
mais bon...
0
watashi_blao Messages postés 23 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 27 mars 2006
24 mars 2005 à 14:43
rectification ça marche pour le déplacement juste "horizontale" mais je veux aussi faire une rotation...
j'ai fait dans le même principe mais ... rien ...

je vous met le code pour voir si ça vous interresse... et si vous savez...pourquoi dans le deuxième cas ça marche pas...

case WM_LBUTTONDOWN:
if (!mousing_m)
{
GetCursorPos(&oldpt);
ShowCursor(false);
mousing = true;
}
break;


case WM_LBUTTONUP:
mousing = false;
SendMessage(gl,WM_PAINT,0,0);
ShowCursor(true);
break;


case WM_MBUTTONDOWN:
if (!mousing)
{
GetCursorPos(&oldpt);
ShowCursor(false);
mousing_m = true;
}
break;


case WM_MBUTTONUP:
mousing_m = false;
SendMessage(gl,WM_PAINT,0,0);
ShowCursor(true);
break;

case WM_MOUSEMOVE:
if (mousing)
{
POINT pt;
GetCursorPos(&pt);
if (pt.y < oldpt.y )
depl -= (float)((( (float)oldpt.y - (float)pt.y ) / (float)oldpt.y ) * 1.0)*depl;
else
depl += (float)((( (float)pt.y - (float)oldpt.y ) / (float)pt.y ) * 1.0)*depl;
if (depl < 1.0) depl = 1.0;
if (depl > 10.0) depl = 10.0;
oldpt=pt;
SendMessage(gl,WM_PAINT,0,0);
}
if (mousing_m)
{
POINT pt;
GetCursorPos(&pt);
if (pt.x < oldpt.x )
angle -= (float)((( (float)oldpt.x - (float)pt.x ) / (float)oldpt.x ) * 1.0) * angle;
else
angle += (float)((( (float)pt.x - (float)oldpt.x ) / (float)pt.x ) * 1.0) * angle;
if (angle < 0.0) angle = 360;
if (angle > 360.0) angle = 0.0;
oldpt=pt;
SendMessage(gl,WM_PAINT,0,0);
}
break;

voilà au passage j'ai pas fait de test sur les coordonnées donc si on sort de la fenêtre alors pas cool... le message WM_LBUTTONUP n'est pas envoyer donc... enfin voilà...
0
Rejoignez-nous