Reperer les coordonnées lors du clic

Signaler
Messages postés
20
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
11 juin 2003
-
Messages postés
8
Date d'inscription
dimanche 16 janvier 2005
Statut
Membre
Dernière intervention
4 février 2005
-
Slut,
Je veux gérer l'evenement OnClick sur la fiche principale (C++ Builder) en enregistrant les coordonnées X et Y de l'endroit où l'utilisateur a cliqué. Le prototype de la fonction est :
void __fastcall TForm1::FormClick(TObject *Sender);
(prototype classique de BCB)

Alors que par exemple, la fonction FormMouseMove fournit les coordonnées de la souris à tout moment :
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y);

Sachant que je ne peux pas modifier ces prototypes, y-a-t il moyen de récupérer les coordonnées au moment du clic sur la fiche, comme c'est possible de le faire lors du simple mouvement de la souris ?

MLine ;)

8 réponses

Messages postés
402
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011

dans ta proc FormClick(...) utilise GetCursorPos(); pour récupérer les coordonnées de la souris:

/* Désolé, je ne connait pas Borland alors je ne sait pas
si cette proc s'écrit exactement de cette facon */
void __fastcall TForm1::FormClick(TObject *Sender)
{

POINT pos;

GetCursorPos(&pos);
// Maintenant 'pos' contient les coordonnées de la souris
// pos.x et pos.y

}

GetCursorPos() est déclarer(défini) dans <windef.h> mais
inclue dans <windows.h>

~(.:: NitRic ::.)~
Messages postés
20
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
11 juin 2003

GetCursorPos() récupère les coordonnées de la souris mais sur l'ensemble de l'écran. Si je déplace la fiche, les coordonnées d'une cellule changent alors que celle-ci n'a pas bougé sur la fiche... En fait il faudrait repérer les coordonnées par rapport au repere de la fiche, peut-on adapter GetCursorPos() ou y-a-t il un autre moyen ?

MLine ;)
Messages postés
55
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
7 décembre 2004

essaye GetCursorValues:
Passe le nom de chaque constante de curseur prédéfinie à un rappel.

Unité

Controls

Catégorie

routines de gestion du curseur

extern PACKAGE void __fastcall GetCursorValues(Classes::TGetStrProc Proc);

Description

Appelez GetCursorValues pour exécuter un rappel pour chaque constante de curseur intégrée à la VCL.  Le paramètre Proc est la fonction de rappel appelée pour chaque nom de constante de curseur.

Remarque :	Pour convertir en curseurs les chaînes passées à la procédure de rappel, utilisez IdentToCursor.  Pour convertir un curseur en nom de constante qui puisse être comparé à la chaîne passée à la procédure de rappel, utilisez CursorToIdent.


ce texte j'ai trouvé dans l'aide de Borland C++.. regarde tu trouveras ;)

bonne prog, bdk
Messages postés
55
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
7 décembre 2004

ou alors avec GetCursorPos, fais en sorte de ne pas deplacer la form lol, genre form sans les bords :)
a+
Messages postés
20
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
11 juin 2003

j'ai creusé l'aide sur cette fct, mais j'arrive pas a savoir si c vraiment la fct qu'il me faut, d'autant que j'arrive pas a l'utiliser :/ (constante de curseur, fonction de rappel... moui)
(en + j'ai le logiciel en anglais donc l'aide en anglais aussi)
menfin merci pour l'info

MLine ;)
Messages postés
20
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
11 juin 2003

non lol !! c'est pas du tout flexible comme interface si tu peux pas déplacer les fenetres ...
MLine ;)
Messages postés
20
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
11 juin 2003

Ca y est j'ai trouvé ! Pour info :
Suffit effectivement de récupérer les coord avec
GetCursorPos(&pos);
puis de les transformer en coord. par rapport a la fiche grace a la fct ScreenToClient :
Xclient = ScreenToClient(pos).x;
Yclient = ScreenToClient(pos).y;
(il existe aussi ClientToScreen)
Voilà, ça fait plaisir quand on trouve (alors si ca peut aider qqn..) !

MLine ;)
Messages postés
8
Date d'inscription
dimanche 16 janvier 2005
Statut
Membre
Dernière intervention
4 février 2005

Salut , la question m'interesse enormement , seulement je n'y connait rien en c++ .

En fait je voudrais integrer du code natif dans mon application java,
en particulier ma procedure principale fera appel à une fonction ecrite
en c++ qui aura pour role d'ecouter l'ecran et dés qu'un evenement tel
qu'un click ou un release est détecté , cette fonction renverrait une
chaine de caractere (le jni ne gere pas grand chose a part les chaines
de caracteres) avec en premier l'absisse du click puis l'ordonnée et
enfin 0 si c'etait un click et 1 si c'etait release. Je sais pas si
c'est trop demandé mais si certains pouvaient m'ecrire le codeca serait
super sympa , sinon si vous pouvez me conseiller un bon
editeur-compilateur assez facile d'utilisation et quelques conseils je
suis preneur :) merci :). Si ca marche je mettrai le code java+ la
manipulation pour integrer le c++ sur ce site, parceque je crois que ca
interesse pas mal de debutants comme moi.

merci :) :)