begin process at 2012 02 17 09:07:25
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Control

 > MOUSEOUT ET MOUSEOVER SUR LES CONTROLES WINDOWLESS TRANSPARENTS

MOUSEOUT ET MOUSEOVER SUR LES CONTROLES WINDOWLESS TRANSPARENTS


 Information sur la source

Note :
Aucune note
Catégorie :Control Classé sous :Control, Windowless, transparent, mouseout, mouseover Niveau :Débutant Date de création :10/10/2008 Date de mise à jour :11/10/2008 13:35:06 Vu / téléchargé :2 641 / 231

Auteur : medkarim

Ecrire un message privé
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 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


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 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

Source avec Zip Source avec une capture EXTENDED COMMON DIALOG CONTROL- BOITE DE DE DIALOGUE COMMUNE...
Source avec Zip Source avec une capture CALCULATEUR DE FLAGS POUR BOITE DE DIALOGUE COMMUNE - COMMON...
Source avec Zip Source avec une capture LABEL UNICODE
Source avec Zip INITIALISER LA COULEUR PAR DEFAUT D'UNE BOITE DE DIALOGUE CO...
Source avec Zip Source avec une capture JEU DE DAMES UNIVERSEL EN SOLITAIRE

 Sources de la même categorie

Source avec Zip COMMUNICATION MODBUS MASTER par sergelapointe
Source avec Zip Source avec une capture DÉPLACEMENT AVEC FLÈCHES DANS UN PAVÉ DE TEXTBOX 9X9 DYNAMIQ... par EhJoe
Source avec Zip Source avec une capture Source .NET (Dotnet) CONTROLSTARS EN RÉPONSE À JAKNIGHT007 par bigboss9
Source avec Zip Source avec une capture Source .NET (Dotnet) CALENDRIER ANNUEL NORME ISO par Prog1001
Source avec Zip Source avec une capture Source .NET (Dotnet) CONTROLE STARS par jaknight007

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) CONTROLSTARS EN RÉPONSE À JAKNIGHT007 par bigboss9
Source avec Zip Source avec une capture Source .NET (Dotnet) HORLOGE SIMPLE par zippedfire
Source avec Zip Source avec une capture [VB6 - ACTIVEX] RGWEATHER - LA MÉTÉO SIMPLEMENT DANS VOS APP... par magicgus
Source avec Zip Source avec une capture [VB6 - ACTIVEX] MAGICBOX OU BOITE À CONTROLS... par magicgus
Source avec Zip CLICK SUR LES CONTROLES WINDOWLESS TRANSPARENTS... par Renfield

Commentaires et avis

Commentaire de Renfield le 11/10/2008 08:28:09 administrateur CS

Dim left, right, top, bottom As Long
ici, left, right et top sont des variant. bottom est le seul Long

gaffe, ton controle gère mal le ScaleMode de la Form.
si on passe de Twips à pixels, ca coince...


 Ajouter un commentaire


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&#233; 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


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,090 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales