Souris

Signaler
Messages postés
23
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
27 mars 2006
-
Messages postés
23
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
27 mars 2006
-
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

Messages postés
23
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
27 mars 2006

ouaip finalement j'ai trouvé ... en bidouillant à max...
mais bon...
Messages postés
23
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
27 mars 2006

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à...