Recuperer la position de la souris ds une form

Tetris42 Messages postés 53 Date d'inscription lundi 4 août 2003 Statut Membre Dernière intervention 22 décembre 2003 - 4 sept. 2003 à 13:38
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 - 5 sept. 2003 à 01:42
Salut,
Je cherche a recuperer la position de ma souris sur ma form quand je clike sur la form.
Comment faire ?

Merci

6 réponses

Tilois Messages postés 721 Date d'inscription dimanche 10 juin 2001 Statut Membre Dernière intervention 27 mars 2011 7
4 sept. 2003 à 13:52
Tu utlise l'api GetCursorPos. La tu obtiens la postion sur l'écran de la souris. Après tu fais la position sur l'écran X- la coordonnée Left de ta forme pour obtenir la position en abcsisse. Puis tu fais pareil avec la postion Y- la coordonnée Top de ta form pour obtenir l'ordonée.. Voila
0
Tetris42 Messages postés 53 Date d'inscription lundi 4 août 2003 Statut Membre Dernière intervention 22 décembre 2003
4 sept. 2003 à 14:24
-------------------------------
Réponse au message :
-------------------------------

> Tu utlise l'api GetCursorPos. La tu obtiens la postion sur l'écran de la souris. Après tu fais la position sur l'écran X- la coordonnée Left de ta forme pour obtenir la position en abcsisse. Puis tu fais pareil avec la postion Y- la coordonnée Top de ta form pour obtenir l'ordonée.. Voila

Je vais passer pour un boulet mais
j ai des erreurs lors de la compil

user- defined type not defined

----------------------------------------------------------------------

Private Type RECT
left As Long
top As Long
right As Long
bottom As Long
End Type
Private Type point
X As Long
Y As Long
End Type
Private Declare Sub ClipCursor Lib "user32" (lpRect As Any)
Private Declare Sub GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT)
Private Declare Sub ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As point)
Private Declare Sub OffsetRect Lib "user32" (lpRect As RECT, ByVal X As Long, ByVal Y As Long)
'Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Private Sub cmdQuit2_Click()
frmDynamic.Hide
ClipCursor ByVal 0&
End Sub
Private Sub onclick()
GetCursorPos
End Sub
Private Sub cmdStart_Click()
Dim client As RECT
Dim upperleft As point
GetClientRect Me.hwnd, client
upperleft.X = client.left
upperleft.Y = client.top
ClientToScreen Me.hwnd, upperleft
OffsetRect client, upperleft.X, upperleft.Y
ClipCursor client
txtkv100.Text = GetCursorPos(X) ' je veux mettre la coordonee X de ma souris lorske je klike
txtkv100.Text = GetCursorPos(Y) ' je veux mettre la coordonee Y de ma souris lorske je klike
End Sub

Private Sub cmdStop_Click()
'Releases the cursor limits
ClipCursor ByVal 0&
End Sub

Private Sub Form_Click()
Dim pos As POINTAPI
GetCursorPos pos
ScreenToClient Me.hwnd, posMe.Label1 "Position Horizontale X : " & pos.X & vbCrLf & _
"Position Verticale Y = : " & pos.Y
Me.DrawWidth = 2 ' Pixel plus épais
Me.ScaleMode = vbPixels ' Feuille en mode Pixel
Me.PSet (pos.X, pos.Y), RGB(255, 0, 0) ' Affiche le pixel en rouge
Me.DrawWidth = 1 ' Pixel normal
Me.ScaleMode = vbTwips ' Feuille en mode Twip
End Sub

Private Sub form_load()
lblKv40max.Caption = frmVI.txtKv40max.Text
lblKv40max.FontBold = True
lblKv40min.Caption = frmVI.txtKv40min.Text
lblKv40min.FontBold = True
lblKv100min.Caption = frmVI.txtKv100min.Text
lblKv100min.FontBold = True
lblKv100max.Caption = frmVI.txtKv100max.Text
lblKv100max.FontBold = True
End Sub

----------------------------------------------------------------------
0
Tilois Messages postés 721 Date d'inscription dimanche 10 juin 2001 Statut Membre Dernière intervention 27 mars 2011 7
4 sept. 2003 à 14:52
Ok voila ton truc corrigé:

Private Type POINTAPI
X As Long
Y As Long
End Type

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function ScreenToClient Lib "user32" (ByVal hWnd As Long, lpPoint As POINTAPI) As Long

Private Sub Form_Click()
Dim pos As POINTAPI
GetCursorPos pos
ScreenToClient Me.hWnd, posMe.Label1 "Position Horizontale X : " & pos.X & vbCrLf & _
"Position Verticale Y = : " & pos.Y
Me.DrawWidth = 2 ' Pixel plus épais
Me.ScaleMode = vbPixels ' Feuille en mode Pixel
Me.PSet (pos.X, pos.Y), RGB(255, 0, 0) ' Affiche le pixel en rouge
Me.DrawWidth = 1 ' Pixel normal
Me.ScaleMode = vbTwips ' Feuille en mode Twip
End Sub

Bon le reste j'y ai pas touché (je l'ai juste enlevé pour gagné de la place)
Tiens moi au courant si ca marche
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
4 sept. 2003 à 15:21
Solution 10x plus simple :
Dans l'évt MouseUp de la Form, tu as les coordonnées de la souris (X et Y) en argumetn de l'Evt

Pourquoi compliqué ce qui est simple
Christophe R.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tetris42 Messages postés 53 Date d'inscription lundi 4 août 2003 Statut Membre Dernière intervention 22 décembre 2003
4 sept. 2003 à 15:26
> Tiens moi au courant si ca marche

Nikel Merci
;)

Maintenant y me reste plus qu a trouver un algo ki me permettrait de definir une echelle pour mon abssice
cad quand je clike sur X il me mette un point a
(110,17)

-------------------------------------------------------
|...................................................................|
|..kv40max(21)..|l..........................................|
|.......................|...........................................|
|.......................|...........................................|
|.......................|.......X..................................|
|.......................|...........................................|
|...kv40min(14)..|________________...................|
|...................................................................|
|.......kv100min(100)........kv100max(140)........|
|...................................................................|
|...................................................................|
-------------------------------------------------------

Alors la si kelkun peut m aider je suis preneur
Mais merci a toi Tilois pour ton aide
;)
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
5 sept. 2003 à 01:42
Salut

pourquoi pas :

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Me.DrawWidth = 3
Select Case Button
Case vbLeftButton 'le bouton gauche pour placer un point
PSet (X, Y), vbRed
Case vbRightButton 'le bouton droit pour effacer
PSet (X, Y), Me.BackColor
End Select
End Sub

et tu places un point rouge de taille 3 là où tu as cliqué
0
Rejoignez-nous