Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Positionner curseur sur form ???

9 réponses
Avatar
LE TROLL
Bonjour,

Comment positionner le curseur sur la form, et y a-t-il d'autres
paramètres à activer avec, exp :

Me.scaleMode = vbPixels
From1.monCurseur.largeur = pictureBox1.left + (pictureBox1.width / 2)
Form1.monCurseur.hauteur = picturebox1.top + (picturebox1.height / 2)

Y a bien ça :
Private Declare Function SetCursorPos Lib "user32" Alias "SetCursorPos"
(ByVal x As Long, ByVal y As Long) As Long
SetCursorPos 820, 480

Mais en vbNet ???

Merci, Cordialement.

-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.

9 réponses

Avatar
Patrice
Bonjour,

Mais en vbNet ???





Que donne MyForm.Cursor.Position ? Si les coordonnées sont relatives à
l'écran et non pas au formulaire (comme avec
http://msdn.microsoft.com/en-us/library/system.windows.forms.cursor.position.aspx),
voir MyForm.PointToScreen pour convertir les coordonnées
(http://msdn.microsoft.com/fr-fr/library/system.windows.forms.control.pointtoscreen.aspx).

--
Patrice
Avatar
Patrice
Un test rapide me donne donc par exemple :

Dim localPoint As New Point(Button1.Width 2, Button1.Height 2)
Cursor.Position = Button1.PointToScreen(localPoint)

Donc la même chose avec un picturebox ou n'importe quel autre contrôle (au
lieu de Button1) permettra de centrer le pointeur de la souris sur ce
contrôle...

--
Patrice
Avatar
LE TROLL
Bonjour,

Je vais étudier la question, merci, toutefois, pourquoi ça ne marche pas
ça :

Cursor.Position = New Point(Cursor.Position.X = 550, Cursor.Position.Y =
450)


Alors que ça, ça marche :



Cursor.Position = New Point(Cursor.Position.X + 150, Cursor.Position.Y + 0)



???


--
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Patrice" <http://scribe-fr.blogspot.com/> a écrit dans le message de
news:
Un test rapide me donne donc par exemple :

Dim localPoint As New Point(Button1.Width 2, Button1.Height 2)
Cursor.Position = Button1.PointToScreen(localPoint)

Donc la même chose avec un picturebox ou n'importe quel autre contrôle (au
lieu de Button1) permettra de centrer le pointeur de la souris sur ce
contrôle...

--
Patrice






Avatar
LE TROLL
Patrice,

Ton exemple en effet marche très bien :

Dim localPoint As New Point(PictureBox1.Width 2, PictureBox1.Height 2)



Cursor.Position = PictureBox1.PointToScreen(localPoint)


En fait je manque de mots-clefs et de leur utilisation, par exemple
"point", "cursor.position", "pointToScreen" je ne sais pas ce que c'est ni
comment on les utilise, pareil, utiliser "new", ça revient à lier le code à
un objet extérieur afin d'utiliser ses propriétés, genre Excel, de facto je
ne comprends pas trop pourquoi le curseur ne fait pas partie de la form,
genre "form1.cursor=x,y", y a peut être une possibilité plus simple, je ne
sais, bref, même l'API 32 est plus courte... c'est comme ça :o)

Par contre je ne sais pas le mettre par rapport à l'écran, en revanche,
par rapport à la form je présume que c'est pareil que l'objet picturebox ?

Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Patrice" <http://scribe-fr.blogspot.com/> a écrit dans le message de
news:
Un test rapide me donne donc par exemple :

Dim localPoint As New Point(Button1.Width 2, Button1.Height 2)
Cursor.Position = Button1.PointToScreen(localPoint)

Donc la même chose avec un picturebox ou n'importe quel autre contrôle (au
lieu de Button1) permettra de centrer le pointeur de la souris sur ce
contrôle...

--
Patrice






Avatar
Bill2
LE TROLL wrote:
Bonjour,

Je vais étudier la question, merci, toutefois, pourquoi ça ne
marche pas ça :

Cursor.Position = New Point(Cursor.Position.X = 550,
Cursor.Position.Y = 450)


Alors que ça, ça marche :



Cursor.Position = New Point(Cursor.Position.X + 150,
Cursor.Position.Y + 0)





Cursor.Position demande "un point"
Ce point, tu l'obtiens en créant un nouveau point (new point())
et ce point, tu lui donnes des coordonnées X, et Y
new point(200,350) par exemple

Ca c'est valide :
New Point(Cursor.Position.X + 150, Cursor.Position.Y + 0)

Pour X, tu donnes Cursor.position.X +150
Ce qui équivaut à "faire avancer" de 150 px le curseur sur l'axe des X
et le "Y" est inchangé

Par contre, ça c'est pas valide :
Cursor.Position = New Point(Cursor.Position.X = 550, Cursor.Position.Y =
450)

Pourquoi ?
Parce que Cursor.Position.X = 550 est une affectation, et que ça ne renvoit
pas de résultat
Ca effectur un calcul, là pour le code attend une valeur ...


--
Bill2
www.Bashfr.org : 'tain je reçois un mms d'un pote avec mon cul en
photo... j'ai foutu quoi moi encore hier soir...
Avatar
LE TROLL
Bonjour Bille n°2,

Merci, merci... je commence à comprendre...

Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Bill2" a écrit dans le message de
news:%
LE TROLL wrote:
Bonjour,

Je vais étudier la question, merci, toutefois, pourquoi ça ne
marche pas ça :

Cursor.Position = New Point(Cursor.Position.X = 550,
Cursor.Position.Y = 450)


Alors que ça, ça marche :



Cursor.Position = New Point(Cursor.Position.X + 150,
Cursor.Position.Y + 0)





Cursor.Position demande "un point"
Ce point, tu l'obtiens en créant un nouveau point (new point())
et ce point, tu lui donnes des coordonnées X, et Y
new point(200,350) par exemple

Ca c'est valide :
New Point(Cursor.Position.X + 150, Cursor.Position.Y + 0)

Pour X, tu donnes Cursor.position.X +150
Ce qui équivaut à "faire avancer" de 150 px le curseur sur l'axe des X
et le "Y" est inchangé

Par contre, ça c'est pas valide :
Cursor.Position = New Point(Cursor.Position.X = 550, Cursor.Position.Y =
450)

Pourquoi ?
Parce que Cursor.Position.X = 550 est une affectation, et que ça ne
renvoit pas de résultat
Ca effectur un calcul, là pour le code attend une valeur ...


--
Bill2
www.Bashfr.org : 'tain je reçois un mms d'un pote avec mon cul en
photo... j'ai foutu quoi moi encore hier soir...



Avatar
Patrice
>>> Cursor.Position = New Point(Cursor.Position.X = 550,
Cursor.Position.Y = 450)







En plus de la réponse de Bill, je suggère fortement d'utiliser Option
Explicit On ce qui donnera :

Option Explicit On disallow implicit conversion from 'Boolean' to 'Integer'
(car on a deux comparaisons et donc on met 0 ou 1 voir -1 comme
coordonnées).

En fait je manque de mots-clefs et de leur utilisation, par exemple
"point", "cursor.position", "pointToScreen" je ne sais pas ce que c'est ni
comment on les utilise, pareil, utiliser "new"



Cf la doc même si je me souviens que c'est un peu impressionnant au départ.
Le point est juste une classe qui représente un emplacement (avec ses
coordonnées X et Y).

Cursor représente le pointeur de la souris, il est global et non pas
spécifique à un formulaire en particulier donc ce n'est pas une propriété du
formulaire (en fait oui mais sans doute pour compatibilité avec ce qui
existait antérieurement).

PointToScreen est juste une méthode disponible pour chaque contrôle et qui
permet de convertir un emplacement local à ce contrôle vers un emplacement
relatif à l'écran.

Par contre je ne sais pas le mettre par rapport à l'écran, en revanche,
par rapport à la form je présume que c'est pareil que l'objet picturebox ?



Oui idem, MyForm.PointToScreen...

--
Patrice
Avatar
LE TROLL
Merci :o)

--
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Patrice" <http://scribe-fr.blogspot.com/> a écrit dans le message de
news:OVG9k%

Cursor.Position = New Point(Cursor.Position.X = 550,
Cursor.Position.Y = 450)







En plus de la réponse de Bill, je suggère fortement d'utiliser Option
Explicit On ce qui donnera :

Option Explicit On disallow implicit conversion from 'Boolean' to
'Integer' (car on a deux comparaisons et donc on met 0 ou 1 voir -1 comme
coordonnées).

En fait je manque de mots-clefs et de leur utilisation, par exemple
"point", "cursor.position", "pointToScreen" je ne sais pas ce que c'est
ni comment on les utilise, pareil, utiliser "new"



Cf la doc même si je me souviens que c'est un peu impressionnant au
départ. Le point est juste une classe qui représente un emplacement (avec
ses coordonnées X et Y).

Cursor représente le pointeur de la souris, il est global et non pas
spécifique à un formulaire en particulier donc ce n'est pas une propriété
du formulaire (en fait oui mais sans doute pour compatibilité avec ce qui
existait antérieurement).

PointToScreen est juste une méthode disponible pour chaque contrôle et qui
permet de convertir un emplacement local à ce contrôle vers un emplacement
relatif à l'écran.

Par contre je ne sais pas le mettre par rapport à l'écran, en
revanche, par rapport à la form je présume que c'est pareil que l'objet
picturebox ?



Oui idem, MyForm.PointToScreen...

--
Patrice



Avatar
> Par contre, ça c'est pas valide :
Cursor.Position = New Point(Cursor.Position.X = 550, Cursor.Position.Y =
450)

Pourquoi ?
Parce que Cursor.Position.X = 550 est une affectation, et que ça ne
renvoit pas de résultat
Ca effectur un calcul, là pour le code attend une valeur ...




Bonjour,

Je ne réponds pas du tout à la question du Troll, mais je souhaite juste
faire une remarque.
Dans ce cas, Cursor.Position.X = 550 n'est pas une affectation, mais une
comparaison, qui renvoie un booléen.
Ce qui signifie par exemple, si le curseur est à la position X 550 et Y 451,
alors
Cursor.Position = New Point(Cursor.Position.X = 550, Cursor.Position.Y =
450)


est interprété comme :
Cursor.Position = New Point(True, False)
Et sans avoir vérifié, je suppose fortement que ce constructeur n'a aucune
surcharge Point(Boolean, Boolean).

Cordialement,
Stéphane