begin process at 2012 05 29 03:36:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

OpenGL

 > 

gestion de la souris dans une fenêtre OpenGL


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

gestion de la souris dans une fenêtre OpenGL

samedi 1 février 2003 à 12:20:51 | gestion de la souris dans une fenêtre OpenGL

philmus

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.

MERCI.
vendredi 7 février 2003 à 15:26:12 | Re : gestion de la souris dans une fenêtre OpenGL

Sebest

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!


-------------------------------
Réponse au message :
-------------------------------

> 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.
>
> MERCI.
mardi 29 novembre 2005 à 19:17:29 | Re : gestion de la souris dans une fenêtre OpenGL

rrk275

Si tu n'utilise pas glut voici plus simplement
GetCursorPos(&souris);
ou  souris est une variable du type POINT donc
POINT souris;
GetCursorPos(&souris);
rrk275
PS: la position de la souris est donc bien entendu dans souris.x et souris.y
...
dimanche 26 février 2006 à 17:55:31 | Re : gestion de la souris dans une fenêtre OpenGL

frogeraie

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?

dimanche 26 février 2006 à 20:21:17 | Re : gestion de la souris dans une fenêtre OpenGL

rrk275

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);

PS: ca utilise l'api windows donc window.h ou windows.h ...
voir :
[ Lien ]

[ Lien ]

lundi 27 février 2006 à 21:09:26 | Re : gestion de la souris dans une fenêtre OpenGL

frogeraie

Ca me plaisait bien ton idee! J'ai ecrit ce bout de code:
#include <windows.h>
int main(int argc, char *argv[])
{
     static POINT pt;
     POINT pt2;
     POINT pt3;
     BOOL bContinue = TRUE;
     const SHORT Mask = 32768;
     while (bContinue)
     {
          if (GetKeyState(VK_ESCAPE) & Mask)
               bContinue = FALSE;
          GetCursorPos(&pt);
         
              GetCursorPos(&pt2);
             
              pt3.x = (pt.x - pt2.x)/10 + pt.x;
                pt3.y = (pt.y - pt2.y)/10 + pt.y;
         
          SetCursorPos(pt.x,pt.y);
          Sleep(10);
     }
     return 0;
}
Mais IL NE MARCHE PAS.
Dommage.
Tu as une autre idee?

lundi 27 février 2006 à 21:40:58 | Re : gestion de la souris dans une fenêtre OpenGL

rrk275

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;
}

mardi 28 février 2006 à 13:19:29 | Re : gestion de la souris dans une fenêtre OpenGL

frogeraie

OK ca marche!
Mais le curseur tremble, la trajectoire se fait par a-coup.
C'est quoi un code pur API? Je croyais qu'en utilisant #include <windows.h> j'etais dans l'api windows. Je suis paume.

mardi 28 février 2006 à 18:45:24 | Re : gestion de la souris dans une fenêtre OpenGL

rrk275

Euh fin par pur api j'entend une fonction qui est appele a chaque deplacement ... mais pour cela il faut un vrai code windows..

mercredi 1 mars 2006 à 12:36:37 | Re : gestion de la souris dans une fenêtre OpenGL

frogeraie

Merci beaucoup pour ton aide, c'est vraiment super!
Encore une question: c'est quoi "un vrai code windows", moi j'utilise l'ide Visual C++ 2005 Express Edition, je croyais faire du code windows???



Cette discussion est classée dans : gestion, opengl, wm, fenêtre, souris


Répondre à ce message

Sujets en rapport avec ce message

Gestion de la souris OpenGL SANS GLUT [ par Xentor ] Comment faire pour connaitre le déplacement de la souris sans utiliser Glut ? (Savoir si on la déplace en haut, à gauche, etc...) J'ai fait plusieurs Coordonées souris OpenGL [ par goutbouyo ] Salut,Je voudrais récupérer les coordonnées du curseur de ma souris dans ma fenêtre opengl.J'ai réussi à récupérer les coordonnés de la souris dans la Gestion des événement OpenGL [ par theidiot ] Je connais bien glutMouseFunc(); et glutMotionFunc(); pour paramètrer callback x et y. Le problème c'est qu'il faut peser sur le boutton de la souris Pointeur sur une fenêtre [ par dieu2028 ] Je suis en train de créer une application SDI et j'ai créé une barre d'outils flottante dans laquelle est insérer des onglets. Je voudrais pouvoir lor Souris & OpenGL (Glut) [ par norton ] hello, j'aimerai afficher un bitmap à la position de la souris (au clique)pour ce qui est de l'axe X pas de prob mais en Y y a un ptit soucis...Quand [Dev-C++] SetPixel et WM_PAINT mais sans fenêtre [ par Isoth0p ] Bonjour. Je voudrais savoir s'il serait possible d'utiliser la fonction SetPixel dans un WinMain SANS créer de fenêtre et qu'elle se comporte comme à Du 3D dans une fenêtre Windows [ par Tibabou ] Bonjour/soir,J'aimerais savoir comment insérer dans une fenêtre windows toute simple une zone de "dessin": un cadre avec du 3D dedans en fait. (c'est coordonnees opengl d'un clic de souris [ par sheeper ] Bonjour,J'aimerais savoir comment convertir les coorddonnes d'un clic de souris (donc relative a l'ecran) en coordonnes correspondantes pour ma fenetr Souris sous OpenGL + Glut [ par mondrone ] J'ai vu qu'il y avait des fonctions permettant de gérer les appuis de boutons de souris ou de touche de clavier qui donnaient au passage les coordonné Molette souris en Opengl [ par krisallyde ] BonjourJ'ai cherche un peu partout sur le site et sur internet mais je n'arrive pas a trouver la fonction qui gere la molette de la souris en Opengl.S


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,014 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales