philmus
Messages postés1Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention 1 février 2003
-
1 févr. 2003 à 12:20
frogeraie
Messages postés10Date d'inscriptiondimanche 26 février 2006StatutMembreDernière intervention18 janvier 2007
-
1 mars 2006 à 12:36
salut,
je commence à écrire des petits pgs OpenGL; maintenant,
je doit gérer l'entrée (clavier et souris) pour interagir avec
l'utilisateur. Le pb est que je veux savoir comment récupérer la position de la souris (les coordonnées dans une fenêtre OpenGL) lorsque les messages WM_LBUTTONDOWN et WM_LBUTTONUP sont envoyés à cette fenêtre.
cs_Sebest
Messages postés4Date d'inscriptionsamedi 1 février 2003StatutMembreDernière intervention24 septembre 2004 7 févr. 2003 à 15:26
Salut,
Dans main il faut que tu mettes : glutMouseFunc(souris);
et après tu crée une fonction du style :
void souris(int button, int state, int x, int y)
{
if(menuPrinc)
{
// bouton Jouer
if((x>=320) && (x<=480) && (y>=260) && (y<=310) && (button==GLUT_LEFT_BUTTON) && (state==GLUT_DOWN))
{
menuPrinc = false;
menuJouer = true;
}
// etc...
}
}
C'est une partie de mon programme donc les variables menu n'ont pas d'importance!
frogeraie
Messages postés10Date d'inscriptiondimanche 26 février 2006StatutMembreDernière intervention18 janvier 2007 26 févr. 2006 à 17:55
Je voudrais changer le rapport des deplacements souris/curseur, cad
lorsque je deplace la souris de 10 cm je voudrais que le curseur ne se
deplace que de 1 cm!
J'ai bien compris, je crois, l'utilisation de getcursorpos preconisee
par rrk275, mais quand j'essaie de reprendre (en les modifiant)
souris.x et souris.y dans setcursorpos cela ne marche pas. Quelqu'un
(rrk275?) aurait-il une idee?
rrk275
Messages postés540Date d'inscriptionvendredi 25 juin 2004StatutMembreDernière intervention 1 octobre 20072 26 févr. 2006 à 20:21
Deja Setcursurpos est pour placer la souris donc tu stocke dans souris ta position :
static POINT souris;
GetCursorPos(&souris);
ensuite a chaque deplacement tu recupere la nouvelle valeur dans une autre variable
POINT souris2;
GetCursorPos(&souris2);
et tu divise par 10 la difference ; et tu stocke dans un 3eme buffer
POINT souris3;
souris3.x = souris.x - souris2.x /10 + souris.x;
souris3.y = souris.y - souris2.y/10 + souris.y;
et ensuite tu remet
ton curseur a souris3
SetCursorPos(&souris);
rrk275
Messages postés540Date d'inscriptionvendredi 25 juin 2004StatutMembreDernière intervention 1 octobre 20072 27 févr. 2006 à 21:40
bah en fait tu aligne or ce qu'il faut faire c'est une 1ere fois stocker dans pt puis dans pt2 je te montre
#include <windows.h>
int main(int argc, char *argv[])
{
static POINT pt;
POINT pt2;
POINT pt3;
BOOL bContinue = TRUE;
const SHORT Mask = 32768;
GetCursorPos(&pt);//on l'initialise une 1ere fois...
while (bContinue)
{
if (GetKeyState(VK_ESCAPE) & Mask)
bContinue = FALSE;
GetCursorPos(&pt2);
pt3.x = ( pt2.x-pt.x)/10 + pt.x;//me suis trompé de sens ..
pt3.y = (pt2.y- pt.y )/10 + pt.y;
SetCursorPos(pt3.x,pt3.y);//les resultats sont dans pt3 pas dans pt .... me suis encore trompé devais pas etre reveillé...
GetCursorPos(&pt);
//enregistre apres tes calculs mais avant de faire ton sleep... et donc pour le tour d'apres...
Sleep(10);// 10 c'est beaucoup moi je mettrais 2 ou 1 ... et j'utiliserais un code pur API ,
// comme ca des que ca bouge on change ...
}
return 0;
}