Event quand la form bouge (subsclassing)

Soyez le premier à donner votre avis sur cette source.

Vue 4 270 fois - Téléchargée 316 fois

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

Ajouter un commentaire

Commentaires

Messages postés
18
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
8 mars 2004

Y' a un exemple de trackmouseevent sur API-Guide (www.allapi.net)
Messages postés
530
Date d'inscription
lundi 3 juin 2002
Statut
Membre
Dernière intervention
13 juin 2004

pour ceux ki le sav' pas, C ossi posible de fer un event mouse_leave (avec l'api trackevent).

G pas de kod' sous la main, mé bon !
Messages postés
282
Date d'inscription
dimanche 1 avril 2001
Statut
Membre
Dernière intervention
12 février 2007

oui je connaissait déjà, mais c'est bien de le dire et d'en faire profiter les autres qui connaissent pas !!!
mais je voudrais savoir si tu sais comment faire un hook sur un exe ou une dll et non une fenêtre ?
Messages postés
399
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
6 septembre 2004

pas mal...

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.