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
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.