VB6 Tracer le suivi de la souris ou ligne droite sur une forme

Décembre 2016


Lignes aléatoires

  • Pour que la trace suive la souris, cliquer sur la forme, maintenir le bouton droit et déplacer.
  • Relâcher pour terminer.

Lignes droites

  • Pour tirer des lignes droites, cliquer sur la forme au point de départ et maintenir le bouton, déplacer la souris au point d'arrivée et relâcher le bouton.

Pour cette dernière fonction, déplacer le code comme indiqué en remarque.
Peut servir sur tout contrôle qui possède un hdc.

Option Explicit
Const PS_SOLID = 0
Const Epp = 10 'épaisseur du trait

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


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
'sans la ligne >> If Button <> 1 Then Exit Sub
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


Le code en soi n'a pas beaucoup d'intérêt, mais il permet de mettre en œuvre quelques API intéressantes.

A voir également :

Ce document intitulé «  VB6 Tracer le suivi de la souris ou ligne droite sur une forme  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.