Détecter le déplacement d'un Usercontrol (Composant ActivX)
Flocreate
Messages postés300Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention27 mai 2012
-
25 nov. 2009 à 11:53
Flocreate
Messages postés300Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention27 mai 2012
-
27 févr. 2012 à 09:01
Bonjour,
Je suis en train de faire un composant graphique (un Nieme bouton )
Je suis au tout début, je rends juste le contrôle complètement transaprent
avec la méthode StrechBlt. Et ca marche tres bien
Je retrace lors des evenements Resize, AmbiantChange, Paint
Cependant, mon control ne se retrace pas lorsque je le déplace (en mode édition par exemple) . Il faut fermer la denêtre d'édition puis la rouvrir (Resize+Paint) pour que le déplacement ai été pris en compte.
Quel est l'évènement qui dit que le control a été déplacé.
d'avance merci,
Le code de tracé de mon control :
Private Sub Tracer()
'Gérer les dimensions et positions en fonction du scale mode du parent
Dim m_top As Long 'mon haut dans le composant parent
m_top = UserControl.ScaleY(UserControl.Extender.Top, UserControl.Parent.ScaleMode, vbPixels)
Dim m_left As Long 'ma gauche dans le composant parent
m_left = UserControl.ScaleX(UserControl.Extender.Left, UserControl.Parent.ScaleMode, vbPixels)
'Remplir le composant avec ce qu'il y a dessous (transparence)
Dim Res1 As Long
Res1 = StretchBlt(UserControl.hdc, _
0, 0, _
UserControl.ScaleWidth, UserControl.ScaleHeight, _
UserControl.Parent.hdc, _
m_left, m_top, _
UserControl.ScaleWidth, UserControl.ScaleHeight, _
vbSrcCopy)
End Sub
A voir également:
Détecter le déplacement d'un Usercontrol (Composant ActivX)
Tu dois appeler ta sub "Tracer" à partir de la fonction
"Friend Function WindowProc"
le message à intercepter est "WM_WINDOWPOSCHANGED" une constante dont
la valeur est &H47 (à déclarer dans le module)
Donc, la fonction se présentera comme ceci:
Friend Function WindowProc(ByVal hWnd As Long, _
ByVal uMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
If uMsg = WM_WINDOWPOSCHANGED Then call Tracer()
WindowProc = CallWindowProc(mWndProcOrg, hWnd, _
uMsg, wParam, ByVal lParam)
End Function