|
|
|
|
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 Type POINTAPI
X As Long
Y As Long
End Type
Private Sub Form_Click()
If clicking = 0 Then
vardepx = Me.GetMousePosition.pos.X
vardepy = Me.GetMousePosition.pos.Y
clicking = 1
Exit Sub
End If
vararrx = Me.GetMousePosition.pos.X
vararry = Me.GetMousePosition.pos.Y
Form1.Line (vardepx, vardepy)-(vararrx, wararry), 8
End Sub
Private Function GetMousePosition() As POINTAPI
Dim pos As POINTAPI
GetCursorPos pos
ScreenToClient Me.hwnd, pos
pos.X = Screen.TwipsPerPixelX * pos.X
pos.Y = Screen.TwipsPerPixelY * pos.Y
GetMousePosition = pos
End Function
Private Sub Form_Load()
clicking = 0
End Sub
Configuration: Windows XP Internet Explorer 6.0
UP SVP. |
Bonjour,
Pour récupérer la position de la souris dans une Form, moi j'utilise les évènements Form_MouseDown, Form_MouseUp et Form_MouseMove. Pour tracer une ligne, il y la méthode Line. A+. |
Bonjour Amigo,
Dans l'idée j'ai rien contre mais avec ces évenements comme récupérer les valeurs x et y de la souris ? Où je l'ai trouve, en fait je veux faire un programme qui au premier clic récupère les valeurs de la souris et les stocke dans 2 variables et ensuite lors du second clic stock dans deux autres variables et avec ces quatre variables (départ de X et Y et fin de X et Y) tracer une ligne. Comment faire s'i lte plaît ? Peux-tu me montrer le code stp ? Merci beaucoup ! |
Bonjour,
1ère chose a faire, déclarer tes variables au desssus du module Dim vardepx as integer Dim vardepy as integer Dim clicking as integer Et ta fonction va... Fonctionner. Sauf que tu doit remettre clicking à 0 au 2ém passage. Mais amigo a raison, il faut employer les événements souris de la feuille, là tu à directement le X et le Y par rapport à ta forme. A+ L'expérience instruit plus sûrement que le conseil. (André Gide) |
Bonjour,
Exemple de dessin de lignes sur une Form Ouvre un nouveau projet et place un controle Line (Line1) sur la Form (Form1) Colle ce code dans le code de la Form et execute Appuyer sur le bouton1 de la souris et garder appuyé, déplacer la souris et relacher le bouton.
Option Explicit
Dim x1, x2, y1, y2
Dim Btn As Boolean
Private Sub Form_Load()
Me.Line1.Visible = False
Me.AutoRedraw = True
Me.DrawWidth = 3
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
x1 = X: y1 = Y: Btn = True
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
x2 = X: y2 = Y
If Btn Then
With Me.Line1
.x1 = x1
.y1 = y1
.x2 = x2
.y2 = y2
.Visible = True
End With
End If
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
x2 = X: y2 = Y: Btn = False
Me.Line1.Visible = False
Me.Line (x1, y1)-(x2, y2)
End Sub
|
Petit exercice.. dessine sur la forme ou tout autre objet qui possède un hdc.
Option Explicit
Const PS_SOLID = 0
Private Type POINTAPI
X As Long
Y As Long
End Type
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, _
ByVal X As Long, ByVal Y As Long, lpPoint As Any) As Long
Const Epp = 10
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
DeleteObject SelectObject(Me.hdc, CreatePen(PS_SOLID, Epp, RGB(0, 255, 0)))
MoveToEx Me.hdc, X, Y, &H0
End Sub
'Mettre ce code dans Form_MouseUp pour une ligne droite
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button <> 1 Then Exit Sub
DeleteObject SelectObject(Me.hdc, CreatePen(PS_SOLID, Epp, RGB(0, 255, 0)))
LineTo Me.hdc, X, Y
Me.Refresh
End Sub
Nouveau Projet et coller le code dans le module de la forme. Tant que le bouton de la souris est enfoncé, la ligne suit le curseur. L'expérience instruit plus sûrement que le conseil. (André Gide) |
Merci beaucoup de votre aide, mon problème est résolu.
Grâce à vous j'ai réussi à faire le système de lignes automatiques déjà tracées. Et j'ai découvert l'utilité des évenements MouseDown, MouseUp et MouseMouve. Merci. |
Résultats pour VB6 Récupérer les valeurs de la souris
Résultats pour VB6 Récupérer les valeurs de la souris
Résultats pour VB6 Récupérer les valeurs de la souris
Résultats pour VB6 Récupérer les valeurs de la souris