|
| Deplacement de champ à la souris |
| Iniciado por guest, 15,feb. 2007 12:40 - 4 respuestas |
| |
| | | |
|
| |
| Publicado el 15,febrero 2007 - 12:40 |
Re bonjour, Voilà, j'ai fait une petite gestion d'evenements permettant à l'utilisateur de déplacer certains champs de la fenetre. J'arrive donc à "prendre" le champ via le clic gauche, puis à le deplacer via WM_MOUSEMOVE. Mon souci est que si je deplace trop vite ma souris lors du WM_MouseMove, mon champ ne suit plus la souris et du coup, ma gestion d'evenement part dans tous les sens ... Auriez-vous une solution à cela ? J'avais trouvé un code dans ce forum qui permettait de faire exactement ce que je voulais (deplacement d'objet) et qui fonctionnait parfaitement, mais impossible de le retrouver... si qqun a quelque chose dans ce genre, je suis très intéressé  Merci |
| |
| |
| | | |
|
| | |
| |
| Publicado el 15,febrero 2007 - 13:47 |
Salut,
Voici un bout de code que j'ai fait et qui fonctionne. Bien sûr, ce n'est que pour l'exemple donc après tu peux l'améliorer. En espérant que ça t'aidera. A++ Emilie L.
// *** CODE DE LA FENETRE // Déclarations globales enMouvement est un booléen champADeplacer est une chaine
// *** CODE DU CHAMP A DEPLACER // Bouton gauche enfoncé champADeplacer = MoiMême..Nom enMouvement = Vrai ThreadExécute(MoiMême..Nom,threadNormal,"SourisBouge") // On lance un thread qui gèrera le déplacement
// Bouton gauche relaché ThreadArrête(MoiMême..Nom,5) // On stop le thread enMouvement = Faux
// *** LA PROCEDURE APPELEE PAR LE THREAD : PROCEDURE SourisBouge()
Res, PosX, PosY sont des entiers // Pour récupérer les coordonnées de la souris
xMini, xMaxi, yMini, yMaxi sont des entiers
// On peut définir des bornes à ne pas dépasser, // pour éviter que l'objet soit déplacé en dehors de l'écran... xMini = 10 xMaxi = 800 yMini = 10 yMaxi = 600
BOUCLE Res = CurseurPos(cpEcran) SI Res <> -1 ALORS // on récupère la position de la souris // (NomFenetre à remplacer par le nom de la fenetre...) PosX = PoidsFaible(Res) - NomFenetre..X PosY = PoidsFort(Res) - NomFenetre..Y // on vérifie que l'on ne sort pas de la zone, sinon on bloque SI PosX < xMini ALORS PosX = XMini SI PosX > xMaxi ALORS PosX = xMaxi SI PosY < yMini ALORS PosY = yMini SI PosY > yMaxi ALORS PosY = yMaxi // On déplace {ChampADeplacer,indChamp}..X = PosX - Xmini {ChampADeplacer,indChamp}..Y = PosY - yMini FIN // Quand on relachera le bouton, enMouvement passera à Faux et on sortira de la boucle SI PAS enMouvement ALORS SORTIR FIN |
| |
| |
| | | |
|
| | |
| |
| Publicado el 15,febrero 2007 - 15:21 |
Bonjour,
Jète un oeil sur l'exemple "Wd Poignées", ca fait entre autre exactement cela sans (apparemment) partir en sucette.
A+ -- Francis MOREL |
| |
| |
| | | |
|
| | |
| |
| Publicado el 15,febrero 2007 - 17:37 |
C'est parfait Emilie, merci  |
| |
| |
| | | |
|
| | |
| |
| Publicado el 16,marzo 2019 - 15:46 |
Bonjour Emilie, 12 ans après çà fonctionne toujours. Merci beaucoup. Dédé du 27. |
| |
| |
| | | |
|
| | | | |
| | |
|