Accueil > > > MOUSEOUT ET MOUSEOVER SUR LES CONTROLES WINDOWLESS TRANSPARENTS
MOUSEOUT ET MOUSEOVER SUR LES CONTROLES WINDOWLESS TRANSPARENTS
Information sur la source
Description
control windowless qui permet de prendre en charge les evenement mouseout et mouseover je me suis inspiré des codes de Renfield http://www.vbfrance.com/codes/CLICK-SUR-C ONTROLES-WINDOWLESS-TRANSPARENTS_42562.aspx http:/ /www.vbfrance.com/codes/TUTORIEL-OCX-BASIQUE_32545 .aspx plus d'info sur les controls masqués: http://support.microsoft.com/kb/185882/fr ce code utilise des api windows pour detecter la position de la souris et un timer pour detecter la sortie de la souris. j'ai essayé avec setcapture sur le control parent . pour l'instant ca ne marche pas tres bien NB les declaration des api sont dans un module de base
Source
- 'Control masqué qui repond aux evenement mouseout et mouseover
- '-------------------------------------------------------------
-
- '.windowless=true
- '.backstyele=0
- '.backcolor=&H000000FF&
- '.maskcolor=&H000000FF&
- '.scalemode=vbpixels
- Option Explicit
-
- Private Over As Boolean 'flag permet de ne pas repercuter l'evenement plusieur fois
-
- Public Event Click()
- Public Event MouseOver()
- Public Event MouseOut()
-
- '## Evenement Timer
- 'permet de verifier à interval la position de la souris par rapport au control
- Private Sub Timer1_Timer()
- Dim PT As POINTAPI 'coordonées X,Y de la souris en pixel
- Dim h As Long 'handle de la fenetre parent
- Dim left As Long, right As Long, top As Long, bottom As Long ' position du control en pixel
- Dim rc As RECT
- GetCursorPos PT 'renvoi la position de la souris par rapport à l'ecran
- h = WindowFromPoint(PT.X, PT.Y) ' renvoie le handle du conteneur lorsque le control est windowless
-
- ScreenToClient h, PT 'convertie la position de la souris par rapport au conteneur
-
-
- 'position du control par rapport au conteneur en pixel
- 'note: le conteneur doit exposé une propriete ScaleMode
- left = UserControl.ScaleX(UserControl.Extender.left, Parent.ScaleMode, vbPixels) 'position gauche en pixel
- right = left + UserControl.ScaleHeight 'position droite en pixel
- top = UserControl.ScaleY(UserControl.Extender.top, Parent.ScaleMode, vbPixels) ' position haut en pixel
- bottom = top + UserControl.ScaleHeight 'position bas en pixel
-
- If PT.X < left Or PT.X > right Or PT.Y < top Or PT.Y > bottom Then 'compare les coordonnée de la souris à la position du control
- UserControl.BackStyle = 0
- RaiseEvent MouseOut 'la souris est sorie
- Timer1.Interval = 0 ' desactive le timer
- Over = False 'met à jour le flag
- End If
-
- End Sub
-
- '## Evenement UserControl
-
- Private Sub UserControl_Initialize()
- Over = False 'initialise le flag
- End Sub
-
- 'Se produit dans un contrôle utilisateur sans fenêtre en réponse à l'activité de la souris.
- Private Sub UserControl_HitTest(X As Single, Y As Single, HitResult As Integer)
- HitResult = vbHitResultHit ' demande au programme de repondre à l'activité de la souris
- ' plus d'info HitResultConstants dans l'explorateur d'objet
- End Sub
-
- Private Sub UserControl_Click()
- RaiseEvent Click
- End Sub
-
- Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
- If Not Over Then
- UserControl.BackStyle = 1
- RaiseEvent MouseOver
- Over = True 'la souris est entrée
- Timer1.Interval = 5 'active le timer . control de la position de la souris toute les 5ms
- End If
-
- End Sub
-
- Private Sub UserControl_Show()
- If Ambient.UserMode Then
- UserControl.BackStyle = 0 'transparent en mode execution
- Else
- UserControl.BackStyle = 1 'opaque en mode création
- End If
-
-
- End Sub
'Control masqué qui repond aux evenement mouseout et mouseover
'-------------------------------------------------------------
'.windowless=true
'.backstyele=0
'.backcolor=&H000000FF&
'.maskcolor=&H000000FF&
'.scalemode=vbpixels
Option Explicit
Private Over As Boolean 'flag permet de ne pas repercuter l'evenement plusieur fois
Public Event Click()
Public Event MouseOver()
Public Event MouseOut()
'## Evenement Timer
'permet de verifier à interval la position de la souris par rapport au control
Private Sub Timer1_Timer()
Dim PT As POINTAPI 'coordonées X,Y de la souris en pixel
Dim h As Long 'handle de la fenetre parent
Dim left As Long, right As Long, top As Long, bottom As Long ' position du control en pixel
Dim rc As RECT
GetCursorPos PT 'renvoi la position de la souris par rapport à l'ecran
h = WindowFromPoint(PT.X, PT.Y) ' renvoie le handle du conteneur lorsque le control est windowless
ScreenToClient h, PT 'convertie la position de la souris par rapport au conteneur
'position du control par rapport au conteneur en pixel
'note: le conteneur doit exposé une propriete ScaleMode
left = UserControl.ScaleX(UserControl.Extender.left, Parent.ScaleMode, vbPixels) 'position gauche en pixel
right = left + UserControl.ScaleHeight 'position droite en pixel
top = UserControl.ScaleY(UserControl.Extender.top, Parent.ScaleMode, vbPixels) ' position haut en pixel
bottom = top + UserControl.ScaleHeight 'position bas en pixel
If PT.X < left Or PT.X > right Or PT.Y < top Or PT.Y > bottom Then 'compare les coordonnée de la souris à la position du control
UserControl.BackStyle = 0
RaiseEvent MouseOut 'la souris est sorie
Timer1.Interval = 0 ' desactive le timer
Over = False 'met à jour le flag
End If
End Sub
'## Evenement UserControl
Private Sub UserControl_Initialize()
Over = False 'initialise le flag
End Sub
'Se produit dans un contrôle utilisateur sans fenêtre en réponse à l'activité de la souris.
Private Sub UserControl_HitTest(X As Single, Y As Single, HitResult As Integer)
HitResult = vbHitResultHit ' demande au programme de repondre à l'activité de la souris
' plus d'info HitResultConstants dans l'explorateur d'objet
End Sub
Private Sub UserControl_Click()
RaiseEvent Click
End Sub
Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Not Over Then
UserControl.BackStyle = 1
RaiseEvent MouseOver
Over = True 'la souris est entrée
Timer1.Interval = 5 'active le timer . control de la position de la souris toute les 5ms
End If
End Sub
Private Sub UserControl_Show()
If Ambient.UserMode Then
UserControl.BackStyle = 0 'transparent en mode execution
Else
UserControl.BackStyle = 1 'opaque en mode création
End If
End Sub
Historique
- 10 octobre 2008 22:08:51 :
- rectification de la description
- 11 octobre 2008 13:35:06 :
- correction des bogues dus au scalemode
le conteneur du control Hidden doit exposé une proprité scalemode
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
User Control Transparent avec degré de transparence [ par Afyn ]
Bonjour, j'ai rouvé du code pour rendre une Form transparente, ainsi que ses Controls fils d'ailleurs, mais je n'ai pas réussi a faire fonctionner ce
Control richtextbox transparent attaché a sa form [ par adess00 ]
Bonjour Je voudrai savoir comment faire pour rendre ma richtextbox transparente.J ai trouvé des sources mais le probleme est que la richtextbox d
transparence d'un control sur un backgroundimage d'une form [ par Adn56 ]
Re salut all,Comme dis dans le titre je n'arrive pas à faire en sorte qu'un control soit rendu transparent sur l'image d'arriére plan de la form ! Il
UserControl transparent + label transparent = ocx invisible, Normal ? [ par spongbob ]
Bonjour, <p class="MsoNormal" st
OCX arrière plan transparent [ par peug ]
Bonjour,Comment rendre un arrière plan d'un control transparent ?J'ai refait un control FRAME mais j'aimerai qu'il puisse avoir l'arrière plan transpa
Control Hérité personalisé [ par XGuarden ]
Bonjours, je cré un control hérité de la textbox et je désire ajouter quelleque propriété au controle. Pas de probleme pour les propriété en général.
Transparence animation Flash (.swf) [ par Didier72 ]
Hello,Voilà j'utilse dans une form transparente une animation Flash (.swf) avec ShockwaveFlash.Sous VB6 en cochant l'option: Transparent, cette animat
Control avec onglets [ par ratala ]
Bonjour tout le monde :)Est-ce que quelqun connait un control pour gerer des onglets sympa ?
Comment faire un alphablend(rendre transparent) un controle [ par prendtonuzi ]
Comment donnez la transparence à une listbox par exemple? une idée? merci.
UserControl: comment obtenir la propriété BackStyle=Transparent comme dans un Label [ par vicosta ]
Salut,Je contacte qu'on peut cliquer sur un Label avec sa propriété backstyle=transparent, et qu'il réagit aux events MouseDown, Click, etc (dans un F
|
Derniers Blogs
ASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHEASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHE par fathi
Tout le monde est unanime pour dire que la programmation multi-thread et asynchrone est en train de devenir un sujet incontournable. Beaucoup de choses sont arrivées avec le framework 4 pour le code parallèle (TPL, PLinq,.) et bientôt, on va avoir l...
Cliquez pour lire la suite de l'article par fathi PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS !PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS ! par Etienne Margraff
J'ai récemment eu un problème pour obtenir l'intelliTrace sur un site web dans IIS. Il n'y avait pas de message d'erreur, rien dans le journal d'évènement Windows, et après 3 appels à une voyante, 2 visites chez un marabou, j'ai failli me résign...
Cliquez pour lire la suite de l'article par Etienne Margraff OFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONSOFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONS par junarnoalg
De nombreuses entreprises font le choix de SharePoint Online, service fourni au travers de l'offre de Microsoft Office 365. S'il est vrai que ce choix apporte un grand nombre d'avantages; rapidité de mise en œuvre, disponibilité, large couvertu...
Cliquez pour lire la suite de l'article par junarnoalg PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|