Event quand la form bouge (subsclassing)

Description

Grâce au subclassing, on peut savoir lorsque l'utilisateur déplace la fenêtre

Source / Exemple :


' ###################
' # Dans une form nommée Form1
' ###################
Private Sub Form_Load()
    HookForm1
    Show 0
End Sub

Private Sub Form_Unload(Cancel As Integer)
    UnHookForm1
End Sub

' ###################
' # Dans un module
' ###################

Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Const GWL_WNDPROC = (-4)

Public Const WM_MOVE = &H3

Public OldProc As Long

Sub HookForm1()
    OldProc = SetWindowLong(Form1.hwnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub

Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Select Case uMsg
        Case WM_MOVE
        Form1.Caption = "Heure du dernier déplacement : " & Time
    End Select
    WindowProc = CallWindowProc(OldProc, hwnd, uMsg, wParam, lParam)
End Function

Sub UnHookForm1()
    Call SetWindowLong(Form1.hwnd, GWL_WNDPROC, OldProc)
End Sub

Conclusion :


Avant de débuguer, tester, ... ma source. merci de lire l'article sur le subclassing (si vous ne voulez pas faire plater votre VB) :
http://vbfrance.com/article.aspx?Val=5226

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.