IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

l'évenement:curseur hors fenêtre


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de zentaf
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Par défaut l'évenement:curseur hors fenêtre
    Comment déclencher un évt lorsque le curseur sort de la zone d'une fenêtre donnée? par exple l'affichage d'un message si l'utilisateur bouge le curseur hors la fenêtre...

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    sur un/une Form, un CommandButton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Option Explicit
     
    Private Type POINTAPI
            X As Long
            Y As Long
    End Type
    'pour lire le deplacement du curseur
    Private Declare Function GetCursorPos Lib "User32" _
    (lpPoint As POINTAPI) As Long
    Dim Retval& 'variable d'appel de la procedure GetCursorPos
    Dim lpPoint As POINTAPI 'variable de récuperation de la procedure GetCursorPos
    Dim ArretCtrlCurs As Boolean
     
    Private Sub Form_Load()
    ArretCtrlCurs = True
    Me.Caption = "Arret"
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
    ArretCtrlCurs = True
    End Sub
     
    Private Sub Command1_Click()
    If ArretCtrlCurs = True Then
      ArretCtrlCurs = False
      SurveilleCurseur
      Else
      ArretCtrlCurs = True
      Me.Caption = "Arret"
      Me.Refresh
    End If
    End Sub
    Public Sub SurveilleCurseur()
    Do While ArretCtrlCurs = False
     DoEvents
     Retval& = GetCursorPos(lpPoint)
     DoEvents
     If lpPoint.Y < ScaleY(Me.Top, vbTwips, vbPixels) Or _
        lpPoint.Y > ScaleY(Me.Top + Me.Height, vbTwips, vbPixels) Or _
        lpPoint.X < ScaleX(Me.Left, vbTwips, vbPixels) Or _
        lpPoint.X > ScaleX(Me.Left + Me.Width, vbTwips, vbPixels) Then
      Me.Caption = "en dhors"
      'recuperer ici la sortire de la boucle avec 
      'ArretCtrlCurs = true: Exit Do
      Else
      Me.Caption = "dedans"
     End If
    Loop
    End Sub
    Motif de l'edit
    plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Do 'While ArretCtrlCurs = False
    '........
    '........
    Loop Until ArretCtrlCurs = True
    Car la sortie de la boucle lors de l'Unload ne fonctionne pas toujours
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonsoir,
    Comme deux idées val mieux que rien, je soumet ma solution.
    C'est vrai qu'a l'inverse de le solution de ProgElect, il faut mettre la form en pixel.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    ' Déclaration du type
    Private Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
    End Type
     
    Private Type POINTAPI
            X As Long
            Y As Long
    End Type
    Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    Private Declare Function GetWindowRect Lib "user32" ( _
            ByVal hwnd As Long, lpRect As RECT) As Long
     
    Private Sub Form_Load()
        Me.ScaleMode = 3 'pixel
    End Sub
     
    Private Sub Timer1_Timer()
    Dim Curs As POINTAPI
    Dim lgRetVal As Long
    Dim r As RECT
        lgRetVal = GetWindowRect(Me.hwnd, r)
        GetCursorPos Curs
        If r.Left < Curs.X And r.Right > Curs.X _
        And r.Top < Curs.Y And r.Bottom > Curs.Y Then
            Label3.Caption = "Dedans"
        Else
            Label3.Caption = "Dehors"
        End If
    End Sub
    A+

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Par défaut
    Comme trois solutions vallent mieux que deux :
    http://allapi.mentalis.org/apilist/D...6BB8C2089.html

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonsoir,
    La 3ème solution à justement 3 défauts par rapport à la question.
    1°) Quand la souris passe sur un control, l'événement Mouse_Move de la form n'agit plus.
    2°) Idem pour l'hwnd
    3°) Et quand la souris est hors de la form cela n'agit plus.
    A+

  6. #6
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    J'aime bien le seconde solution. Ça clignote beaucoup moins, voire pas du tout, indépendamment de l'intervalle qu'on met au Timer.

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Par défaut
    Bonjour LeForestier

    As-tu essayé le code indiqué dans le lien ? Je n'ai pas l'impression...

    Citation Envoyé par LeForestier Voir le message
    Bonsoir,
    La 3ème solution à justement 3 défauts par rapport à la question.
    1°) Quand la souris passe sur un control, l'événement Mouse_Move de la form n'agit plus.
    Cela marche toujours, le curseur est caputé par la form.

    Citation Envoyé par LeForestier Voir le message
    2°) Idem pour l'hwnd
    Désolé je comprends pas.

    Citation Envoyé par LeForestier Voir le message
    3°) Et quand la souris est hors de la form cela n'agit plus.
    Réponse idem au point 1°) : Le curseur est capturé

Discussions similaires

  1. Affichage hors fenêtre
    Par artmicro dans le forum Composants VCL
    Réponses: 2
    Dernier message: 27/11/2012, 10h45
  2. [WD-2007] Déplacer le curseur hors d'un tableau
    Par Manuel40 dans le forum VBA Word
    Réponses: 2
    Dernier message: 15/08/2011, 10h31
  3. Peut-on déclarer un curseur hors de IS/AS
    Par bruce-willis dans le forum PL/SQL
    Réponses: 8
    Dernier message: 11/06/2009, 09h21
  4. [débutant] Barre de menu hors fenêtre
    Par sepas dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 02/10/2007, 20h38
  5. problème d'affichage de liste combo hors fenêtre
    Par federb.do dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 14/06/2006, 19h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo