RESIZE UNE FORM SANS CLIGNOTEMENT MOCHE

elion Messages postés 3 Date d'inscription lundi 19 août 2002 Statut Membre Dernière intervention 21 août 2002 - 21 août 2002 à 09:39
rebixav Messages postés 130 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 28 janvier 2013 - 4 déc. 2012 à 13:57
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/2381-resize-une-form-sans-clignotement-moche

rebixav Messages postés 130 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 28 janvier 2013
4 déc. 2012 à 13:57
Bon ben moi c'est 100% = ok avec une seul astuce, (la tienne LuTo)
"Cette pitite source propose une solution simple pour eviter ca en simulant le relachement du bouton gauche de la sourie"
et rien d'autre !
soit :

Public Declare Sub mouse_event Lib "user32" (ByVal dwflags As Long, _
ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, _
ByVal dwExtraInfo As Long)
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Type POINTAPI
X As Long
Y As Long
End Type

Dim position_souris As POINTAPI
GetCursorPos position_sourisX% position_souris.X: Y% position_souris.Y
Call mouse_event(MOUSEEVENTF_LEFTUP, X%, Y%, 0, 0) 'on relache le bouton

en faite dés le relâchement du clic gauche de la souris le redimensionnement s'arrete !
et cela marche aussi bien au haut que en bas, à gauche et à droite !!!

en faite moi j'ai même utilisé qu'une seul ligne, puisque j'ai déjà une procédure qui s'occupe de la gestion de la souris !

...

Private Sub Form_Resize()
ecran.Top Client_poste.Top + Client_poste.Height + 5: ecran.Left 5
If zz_CD.Width \ Screen.TwipsPerPixelY < ecran.Left + 200 Then zz_CD.Width = (ecran.Left + 200) * Screen.TwipsPerPixelY: choix% = 1
If zz_CD.Height \ Screen.TwipsPerPixelY < ecran.Top + 150 + Stop_clavier_souris.Height Then zz_CD.Height = (ecran.Top + 150 + Stop_clavier_souris.Height) * Screen.TwipsPerPixelY: choix% = 1
If choix% = 1 Then Sendmouse , , Relache_gauche_: Exit Sub '<<<<<<<<<<<<<<<<<<<<< elle est là !!!!
...
...
...
etc.

a plus les petites souris :)
cs_BadNews Messages postés 98 Date d'inscription samedi 30 novembre 2002 Statut Membre Dernière intervention 10 septembre 2007 1
6 juin 2004 à 09:17
Cool, merci!

Pour enlever complètement les clignotements, remplacez:


If .Width < LargeurMin And .Height < HauteurMin Then
Call mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
End If


par:

If .Width < LargeurMin Or .Height < HauteurMin Then
Call mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
End If


Bref, remplacez le "And" par "Or"

Ça éviteras les clignotements. Cepandant, si la largeur arrive à sa limit et que l'hauteur (ou vise verça) n'y est pas, l'évènement MOUSSEEVENTF_ABSOLUTE auras lieu donc le bouton de la sourie seras relâché.

Je trouve ça toujours mieux que le clignotement.

Merci encore.
cs_ramg Messages postés 14 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 6 février 2006
16 avril 2004 à 17:29
Excellent pile poil ce qu'il me fallait

Chez moi ça 'clignote' encore quand je resize sur la largeur ou la hauteur. Cependant quand je resize à partir du coin bas à droite pas de prob.
jockos Messages postés 321 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 14 mai 2005 2
9 avril 2003 à 03:06
ouais, j'ai proposé une nouvelle source, qui améliore grandement cela...
C'est du vrai Resizing... il ne faut pas utiliser la méthode de l"évenement Resize d'une forme, mais utiliser la technique de sous-classement, c'est à dire intercepter directempent le message qui arrive à Windows comme quoi la fenetre est redimensionné...
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 avril 2003 à 19:47
Nota :
Cette méthode ne fonctionne que si vous redimensionnez vos feuilles en les tirant par les bords droit (pour la largeur) et bas (pour la hauteur).
Si vous utilisez les bords gauche ou du haut, votre forme fait un bond !

vala
jockos Messages postés 321 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 14 mai 2005 2
5 févr. 2003 à 12:49
Super cool même...
elion Messages postés 3 Date d'inscription lundi 19 août 2002 Statut Membre Dernière intervention 21 août 2002
21 août 2002 à 09:39
cool
Rejoignez-nous