IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Récupération des coordonnées de la souris


Sujet :

MFC

  1. #1
    Débutant  
    Profil pro
    Bidouilleur
    Inscrit en
    Avril 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2006
    Messages : 145
    Points : 103
    Points
    103
    Par défaut Récupération des coordonnées de la souris
    salut à tous je suis sur que cette question a déjà été posée mais j'ai rien trouvé .
    je veux qu'en clickant sur la souris je récupère ses coordonnées.
    j'ai trouvé "GetCursorPos" mais il n'y a rien sur l'aide de Visual.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CPoint pt;    
    GetCursorPos(pt );
    Ca compile mais ça donne toujours x=1, y=0 .
    où est l'erreur ??
    merci d'avance !!!

  2. #2
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  3. #3
    Débutant  
    Profil pro
    Bidouilleur
    Inscrit en
    Avril 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2006
    Messages : 145
    Points : 103
    Points
    103
    Par défaut
    ah oui j'ai oublié le "&".
    on peut aussi utiliser "OnLButtonDown".
    je crois que je me suis precipité trop vite sur le forum, il faut que j'aprenne a me controler .

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Je voudrais poser une question à la suite de ce sujet.

    La fonction GetCursorPos() marche très bien.
    Donc, j'essaie d'afficher les coordonnées x et y à chaque click.

    Cependant, est-ce normal que les coordonnées s'affichent de temps en temps? et non à chaque click?

    Dois-je rajouter quelque chose?

    Merci d'avance.

  5. #5
    Membre éprouvé
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Points : 1 067
    Points
    1 067
    Par défaut
    Ca dépend de comment tu les récupères, comment tu les affiches,....
    Sans ton code, on peut pas deviner...
    "L'ordinateur obéit à vos ordres, pas à vos intentions." [Anonyme]

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    J'ai réglé le problème, je m'étais trompé de fonction, j'ai mis mon code dans la méthode où il faut double clicker au lieu de mettre mon code dans la méthode où il faut simplement clicker

    J'aurais une autre question s'il vous plait, voilà, je récupère les coordonnées du curseur et je déplace un curseur d'un graphe avec.
    Cependant, en réduisant ou en agrandissant ma fenêtre, les coordonnées sont modifiées et mes calculs sont faussés. Existe-t-il une méthode pour résoudre ce problème?

    J'ai pensé à acquérir la taille de la fenêtre en permanence puis refaire les calculs à chaque changement, mais ça va être lourd. Qu'en pensez-vous?

  7. #7
    Membre éprouvé
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par miwarrior Voir le message
    Cependant, en réduisant ou en agrandissant ma fenêtre
    Zoom ou juste redimensionnement de la fenêtre?
    Citation Envoyé par miwarrior Voir le message
    les coordonnées sont modifiées et mes calculs sont faussés.
    Mais encore? Comment tu te sers de la position de la souris pour déterminer tes coordonnées? Le code de ton OnMouseClick serait plus parlant...
    Citation Envoyé par miwarrior Voir le message
    J'ai pensé à acquérir la taille de la fenêtre en permanence puis refaire les calculs à chaque changement, mais ça va être lourd. Qu'en pensez-vous?
    A priori, je ne vois pas comment faire autrement vu que c'est toi qui définit les bornes visuelles de ton graphe dans ta fenêtre. Mais je me trompe peut-être
    "L'ordinateur obéit à vos ordres, pas à vos intentions." [Anonyme]

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Re,

    En fait, lorsque je lance mon application, on ne voit pas toute l'application, car la fenêtre n'est pas assez grande, par contre, je peux déplacer les sliders en bas et sur le coté droit et c'est là tout mon problème, en déplaçant ces sliders, les coordonnées de la fenêtre sont réajusté pour que le coin en haut à gauche vaut (0,0).

    Je programme sous Visual Studio, et je me demande si on ne peut pas choisir dans les options de lui dire d'adapter la fenêtre à l'application surtout qu'elle ne prend pas l'écran tout entier.

    Pour déterminer la position de ma souris, voilà ce que j'utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	if((nFlags & MK_LBUTTON) == MK_LBUTTON)
    	{
     
    		CString str("" );
    		str.Format("Coordonnée x : %d\nCoordonnée y : %d",point.x, point.y);
    		MessageBox(str);
    }
    Qu'est-ce que tu entends par définir mes bornes? La taille de l'interface de mon application? Oui, celle la c'est moi qui la définit. Sinon lorsque je lance l'application, la taille de la fenêtre est définit automatiquement.

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Bon, après plusieurs essais, voilà où j'en suis,

    j'ai mon application qui à pour taille, prenons par exemple (800*400) et lorsque je la lance, elle s'ouvre sur une fenêtre qui à pour taille, prenons toujours un exemple (400*200). Je me retrouve avec un slider en bas de la fenêtre et un autre sur le côté droit de la fenêtre.

    Donc, si je déplace le slider du bas de la moitié vers la droite, je l'aurais déplacer de 400. Pareil pour le slider sur le côté droit, si je le déplace de la moitié vers le bas, je l'aurais déplacer de 200.

    J'aimerais savoir s'il existe une fonction sous visual permettant de récupérer ces déplacements s'il vous plait?

    Si quelqu'un aurait la gentillesse de m'aider, j'aurais terminer mon projet!!

  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Voilà j'ai trouvé comment faire.

    Il fallait utiliser les WM de windows.

    Par contre je cherche le nSBcode pour un scroll horizontal, quelqu'un sait ou je peux trouver ça? j'ai essayé SB_LINELEFT, SB_LINERIGHT, mais cela fait planté mon application.

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Voilà ce que j'ai fais mais lorsque je clik sur le slider horizontal, mon application plante alors que pour le slider vertical, ça marche nickel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    void CTest_MFCView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
    {
    	int minpos=0;
    	int maxpos=200;
    	pScrollBar->GetScrollRange(&minpos, &maxpos);
    	maxpos = pScrollBar->GetScrollLimit();
     
    	int curpos = pScrollBar->GetScrollPos();
     
    	switch (nSBCode)
    	{
    	case SB_LINELEFT:
    	if (curpos > minpos)
    	curpos--;
    	break;
     
    	case SB_LINERIGHT:
    	if (curpos < maxpos)
    	curpos++;
    	break;
     
    	case SB_THUMBPOSITION:
    	curpos = nPos;
    	break;
     
    	case SB_THUMBTRACK: 
    	curpos = nPos; 	
    	}
    	pScrollBar->SetScrollPos(curpos);
     
    	UpdateData(false);
     
    	CFormView::OnHScroll(nSBCode, nPos, pScrollBar);
    }
    quelqu'un peut me dire la cause s'il vous plait?

  12. #12
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    le debugger est ton ami ,
    tu lances le programme en mode debug trace.
    quand ça plante tu remontes la pile des appels pour arriver sur ton code
    qui cause le problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupération des coordonnées de la souris sous firefox
    Par mounim_taoufik dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/07/2011, 14h39
  2. Réponses: 1
    Dernier message: 27/10/2008, 07h28
  3. Réponses: 0
    Dernier message: 13/11/2007, 11h39
  4. Réponses: 2
    Dernier message: 15/06/2007, 10h08
  5. Réponses: 8
    Dernier message: 04/06/2007, 11h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo