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 :

[]Faire un glisser-déplacer qui marche.


Sujet :

VB 6 et antérieur

  1. #1
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut []Faire un glisser-déplacer qui marche.
    Bonjours, j'ai essayé d'émuler un Glisser-déplacer en utilisant les fonction suivantes:
    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
    Public Declare Sub keybd Lib "user32" Alias "keybd_event" _
    (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, _
    ByVal dwExtraInfo As Long)
    Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, _
    lpPoint As POINTAPI) As Long
    Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal _
    dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
     
    Public Const MOUSEEVENTF_MOVE = &H1
    Public Const MOUSEEVENTF_LEFTDOWN = &H2
    Public Const MOUSEEVENTF_LEFTUP = &H4
    Public Const MOUSEEVENTF_RIGHTDOWN = &H8
    Public Const MOUSEEVENTF_RIGHTUP = &H10
    Public Const MOUSEEVENTF_MIDDLEDOWN = &H20
    Public Const MOUSEEVENTF_MIDDLEUP = &H40
    Public Const MOUSEEVENTF_ABSOLUTE = &H8000
     
    Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    Public Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
     
    Public Type POINTAPI
        X As Long
        Y As Long
    End Type
    avec le code suivant:
    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
    If Chose = 4 Then
        If GDOrder = False Then
            Call SetCursorPos(Xx, Yy)
            mouse_event MOUSEEVENTF_LEFTDOWN, Xx, Yy, 0, 0
            GDOrder = True
        Else
            Call SetCursorPos(XXX, YYY)
            mouse_event MOUSEEVENTF_LEFTUP, XXX, YYY, 0, 0
            GDOrder = False
        End If
    End If
    If Chose = 5 Then
        If GDOrder = False Then
            Call SetCursorPos(Xx, Yy)
            mouse_event MOUSEEVENTF_RIGHTDOWN, Xx, Yy, 0, 0
            GDOrder = True
        Else
            Call SetCursorPos(XXX, YYY)
            mouse_event MOUSEEVENTF_RIGHTUP, XXX, YYY, 0, 0
            GDOrder = False
        End If
    End If
    If Chose = 6 Then
        If GDOrder = False Then
            Call SetCursorPos(Xx, Yy)
            mouse_event MOUSEEVENTF_MIDDLEDOWN, Xx, Yy, 0, 0
            GDOrder = True
        Else
            Call SetCursorPos(XXX, YYY)
            mouse_event MOUSEEVENTF_MIDDLEUP, XXX, YYY, 0, 0
            GDOrder = False
        End If
    End If
    Gorder dépend d'un timer qui effectue le premier puis le segond clic en mesurant l'heure.
    (ou chose et les autres variables sont des variables de controle.)

    je me demandais pourquoi ça ne marchais pas: en effet, il me fait bien un clicdown à un endroit puis un clicup à l'autre mais il n'arrive pas à le déplacer en continu.

    pour le déplacer en continu, j'utilise la fonction setcursorpos avec un calcul de trajectoire mais je ne crois pas que la cfonction setcursorpos interrompe le clic non?

    merci d'avance (si vous avez lu le sujet jusque-là c'est déja pas mal ).

    salut
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  2. #2
    Expert confirmé
    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
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Ça m'a l'air compliqué tout ça. Tu fais une simulation d'un drag 'n drop à l'écran?

  3. #3
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    Tu cherche a faire un Glisser-Déplacer de quoi précisément? une Form ?
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  4. #4
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    n'importe quoi, en fait.

    vu que je prend le controle de la souris, je dois normalement être capable par la même méthode de faire tous les drag & drop que peut faire la souris avec la différenciation bouton gauche, droit, midlle.


    merci qd même
    je ne pourrais faire de test que samedi donc je suis pas pres de résoudre mon problème. Je vais cependant essayer de faire 1 keydown et 1 keyup d'affilée sans utiliser la fonction setcursorpos mais j'ai es doutes de la réussite.

    A+
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  5. #5
    Expert confirmé
    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
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    D'zolée. J'ai fait ça une fois, dans un cours de vb il y a longtemps, et encore, avec les événements et prorpriétés prévues à cet effet. Depuis, je n'ai pas été foutue de le refaire!

    Tu comprends que je suis ton topic avec intérêt!

  6. #6
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    Bon, he bien êtant donné que apparament, personne ne sait comment résoudre tout ça, je vais poster un sujet sur un autre forum (Développement Windows) pour savoir exactement comment windows reçoit les infos de la souris.

    Je voudrais juste demander au modérateurs de ne pas fermer ce sujet tout de suite par-ce que je pense que je vais reveni (enfin, j'espère) quand j'aurais trouvé comment tout cela fonctionne

    salut
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  7. #7
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Quel est l'interet ? Parce que là, je vois pas l'interet de simuler un glisser-déplacer par du code, autant déplacer l'objet directement sans simulation.

    Par contre, il se peut que setcursorpos interrompe le clic. Essaye de n'utiliser que mouse_event, y compris pour tes déplacements

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/06/2010, 11h30
  2. Réponses: 3
    Dernier message: 25/09/2009, 11h48
  3. [AJAX] Comment faire une boucle XMLHttpRequest qui marche ?
    Par lancelot_13 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/01/2007, 12h00
  4. [MySQL] Order by qui marche pas, Que faire ?
    Par mulbek dans le forum PHP & Base de données
    Réponses: 25
    Dernier message: 06/01/2006, 14h48
  5. Sysdate qui marche pas ??
    Par StouffR dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/08/2002, 13h23

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