Soyez le premier à donner votre avis sur cette source.
Vue 10 310 fois - Téléchargée 717 fois
'Fonction principale pour limiter le redimensionnement : Public Function LimiterDimensionFeuille(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long '========================================================================================================= 'Nouvelle fonction de traitement de message de la fenêtre pour intercepter les messages et la magnétiser '========================================================================================================= 'on active la routine de traitement d'erreur On Error Resume Next 'l'erreur etant minime, on continue l'éxécution normalement 'déclaration des variables privées Dim rctPosition As RECT 'stocke la position et la taille de la fenêtre Dim bQuitter As Boolean 'stocke l'état d'activation de sortie de la fonction 'on initialise l'état de sortie de la fonction Let bQuitter = False 'on évite de traiter le message si l'ancienne fonction est invalide If lAncienneFonction = 0 Then Exit Function 'on intercepte le message de début de déplacement ou de redimensionnement et on le traire If wMsg = WM_ENTERSIZEMOVE Then 'on récupère la position de la feuille et de la souris Call GetWindowRect(hWnd, rctPosition) 'on récupère les messages de redimensionnement et de déplacement et on les traite ElseIf wMsg = WM_SIZING Then 'On récupère la position de fenêtre Call CopyMemory(rctPosition, ByVal lParam, Len(rctPosition)) 'on définit la taille de la feuille selon le changement de taille If rctPosition.Right - rctPosition.Left < lWidthMin Then Let rctPosition.Right = rctPosition.Left + lWidthMin ElseIf rctPosition.Right - rctPosition.Left > lWidthMax Then Let rctPosition.Right = rctPosition.Left + lWidthMax End If If rctPosition.Bottom - rctPosition.Top < lHeightMin Then Let rctPosition.Bottom = rctPosition.Top + lHeightMin ElseIf rctPosition.Bottom - rctPosition.Top > lHeightMax Then Let rctPosition.Bottom = rctPosition.Top + lHeightMax End If 'on définit la position de la fenêtre Call CopyMemory(ByVal lParam, rctPosition, Len(rctPosition)) 'on définit la valeur de la fonction de traitement de message de la fenêtre qui doit être 1 Let LimiterDimensionFeuille = 1 'pas la peine d'appeller la fonction de traitement standard. Let bQuitter = True End If 'on appelle la fonction de traitement standard des messages pour le reste des messages If Not bQuitter Then Let LimiterDimensionFeuille = CallWindowProc(lAncienneFonction, hWnd, wMsg, wParam, lParam) End Function
11 févr. 2011 à 17:04
11 févr. 2011 à 11:52
9 févr. 2011 à 20:46
Un équivalent en .NET ??
Merci par avance
Phil
3 juil. 2010 à 17:36
CallWindowProc est utilise dans l'un ou l'autre.
abus de langage...
3 juil. 2010 à 15:57
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.