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

IHM Discussion :

timer durant le clic


Sujet :

IHM

  1. #1
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut timer durant le clic
    bonjour,

    je souhaiterais déclencher un traitement à intervalle régulier pendant la pression du clic gauche.

    le timer semble ne plus se déclencher durant la pression, l'événement "sur souris appuyée" ne se déclenche qu'une fois.

    comment pourrais je contourner le pb?
    peut être le timer d'Arkham46 sur le hWnd de windows? comment l'obtient-on dans ce cas?

    merci.

  2. #2
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Bonjour,

    Effectivement l'événement Timer est un spécial, il ne se déclenche que s'il n'y a plus aucun autre message dans la file d'attente du process.
    Pour ne pas lier le timer à une fenêtre de l'application il faut passer un paramètre 0& à la place du Hwnd
    On récupère alors l'id du Timer en résultat de la fonction APISetTimer.
    Il faut stopper le timer avec cet id.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ' Démarrage
    gId = APISetTimer(0&, gId, interval, AddressOf Callback_Timer)
     
    ' Arrêt
    APIKillTimer 0&, gId
    Dans CallBackTimer on reçoit en wParam la valeur de gId.

    Comme on ne peut plus choisir son Id il faut un peu tout changer.

  3. #3
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    merci beaucoup Arkham46,

    je ne parviens pas à rendre le timer indépendant de la souris.

    d'après aussi l'aide ms ici
    la nullité serait la solution pour ne pas associer à un hWnd, il utilise aussi pour cela la valeur 0 (je pensais que null=&hffffffff )

    enfin dans tous les cas: ca marche pas si le clic est appuyée l'év timer ne se déclenche plus.
    une erreur de ma part? une autre proposition?

    merci.

  4. #4
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Citation Envoyé par vodiem Voir le message
    je ne parviens pas à rendre le timer indépendant de la souris.
    Moi non plus
    Dans access, rien à faire, si on laisse la souris appuyée tous les timers que j'ai testés sont bloqués...
    D'ailleurs même le curseur s'arrête de clignoter...

    Citation Envoyé par vodiem Voir le message
    d'après aussi l'aide ms ici
    la nullité serait la solution pour ne pas associer à un hWnd, il utilise aussi pour cela la valeur 0 (je pensais que null=&hffffffff )
    Pour la plupart des API il suffit de passer 0 en paramètre byval.
    Mieux il est préférable de mettre 0&
    Le & permet de spécifier qu'on passe un long.

    Citation Envoyé par vodiem Voir le message
    une autre proposition?
    Ben non désolé.

  5. #5
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    je te remercie quand même dans tous les cas, c'est très aimable.

  6. #6
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    ok, j'ai finalement trouvé la parade.

    dans le module d'un formulaire vide par exemple:
    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
    Option Compare Database
     
    Private Sub Détail_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Do Until GetKeyState(VK_LBUTTON) >= 0 'jusqu'a ce que le bouton soit relaché
        DoEvents
    Loop
    End Sub
     
    Private Sub Form_Close()
    Call Stop_Test_Timer
    End Sub
     
    Private Sub Form_Load()
    Call Start_Test_Timer
    End Sub
    avec la déclaration de l'API dans un module à part:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Const VK_LBUTTON = &H1
     
    Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Interdiction de clic durant un message sonore
    Par pelerin98 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/03/2015, 19h34
  2. Clic droit mouse_event en timer
    Par jeje25440 dans le forum VB.NET
    Réponses: 2
    Dernier message: 08/07/2012, 18h47
  3. [AC-2010] Rendre clic inopérant durant l'entrée d'un autre formulaire
    Par toumack dans le forum VBA Access
    Réponses: 4
    Dernier message: 06/09/2011, 12h12
  4. [AC-2003] Un timer qui attend un clic pour s'exécuter
    Par Hamadokh dans le forum IHM
    Réponses: 3
    Dernier message: 07/10/2009, 20h00
  5. Comment ne pas rejouer une animation après un clic ?
    Par mmmmhhh dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 04/09/2002, 16h11

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