NEO ::: TEAM
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

NEO ::: TEAM

New Evolution Owner
 
AccueilRechercherDernières imagesS'enregistrerConnexion
-20%
Le deal à ne pas rater :
-200€ Smart TV LG 65″ 4K QNED MiniLED
799 € 999 €
Voir le deal

 

 dététcter le mouvement d'une form

Aller en bas 
AuteurMessage
pinkfloyd
Modérateur
Modérateur



Nombre de messages : 27
Age : 39
Date d'inscription : 04/12/2006

dététcter le mouvement d'une form Empty
MessageSujet: dététcter le mouvement d'une form   dététcter le mouvement d'une form Icon_minitimeLun 8 Jan - 15:14

En VB, aucun événement ne permet d'être averti lorsqu'une form a été déplacée. Mais pour Windows l'événement existe. Il est donc possible de l'intercepter grâce au sousclassement.

Copiez ce code source dans le module de la form.




vb

Private Sub Form_Load()
'Remplace la procédure de fenêtre par défaut par notre propre procédure
oldWndProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub

Private Sub Form_Unload(Cancel As Integer)
'Remet la procédure de fenêtre par défaut
SetWindowLong hwnd, GWL_WNDPROC, oldWndProc
End Sub
Et celui-ci dans un module standard.




vb

Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Public Const GWL_WNDPROC = (-4)
Public oldWndProc As Long

Private 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
Private Const WM_MOVE = &H3

Public Function WindowProc(ByVal hwnd As Long, ByVal msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long

If msg = WM_MOVE Then
'la form a été déplacée
Form1.Cls
Form1.Print "Nouvelle position : " & Form1.Left & ", " & Form1.Top
End If

'Appelle la procédure de fenêtre par défaut pour que Windows puisse traiter l'évènement
WindowProc = CallWindowProc(oldWndProc, hwnd, msg, wParam, lParam)

End Function
Attention, la procédure Form_Unload doit obligatoirement être exécutée. Si vous déboguez et cliquez sur Stop, l'éditeur VB plantera. Si vous fermez votre programme avec l'instruction End, la procédure Form_Unload ne sera pas exécutée et votre programme plantera.
Revenir en haut Aller en bas
 
dététcter le mouvement d'une form
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» redimensionnement d'une form........................(resize)
» Comment deplacer une form qui n'a pas de bare de titre
» Comment ouvrir une meme form plusieurs fois ???

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
NEO ::: TEAM :: Informatique :: Les RADs :: Microsoft Visuel Basic-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser