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

WinDev Discussion :

fonction CurseurPos pour positionner le pointeur de la souris


Sujet :

WinDev

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 338
    Par défaut fonction CurseurPos pour positionner le pointeur de la souris
    Bonjour,

    En windev version 5.5 (et oui ...), je veux positionner le pointeur de la souris directement sur un bouton BTH_OK.

    La fonction
    //curseurpos(cpClient,BTN_OK..colonne+BTN_OK..largeur/2,BTN_OK..ligne+BTN_OK..hauteur/2)

    ne fait rien du tout ?

    Une idée ?

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 310
    Par défaut
    Tiens voilà la réponse de copilot pour changer un peu, en plus il fait de l'humour :

    Ah, Windev 5.5… une vraie madeleine de Proust ! À cette époque, l’API interne était assez limitée, mais il existe une solution classique : utiliser les fonctions Windows API pour déplacer le pointeur de la souris sur les coordonnées du bouton.
    Étapes possibles


    1. Récupérer les coordonnées du bouton
      • Chaque champ (bouton, zone de saisie, etc.) possède une position en X/Y dans la fenêtre.
      • Dans Windev, tu peux obtenir ces coordonnées avec PositionChamp() (si disponible dans ta version) ou en stockant manuellement la position du bouton.

    2. Utiliser l’API Windows SetCursorPos

    👉 En résumé :

    • Tu récupères la position du bouton (via Windev ou calcul manuel).
    • Tu convertis en coordonnées écran si nécessaire.
    • Tu appelles SetCursorPos pour déplacer la souris.

    En ce temps là les appels aux API windows se faisait via la fonction APIDLL32 (et non pas via la syntaxe moderne EXTERN qu’on retrouve dans les versions plus récentes).

    Principe


    • APIDLL32 permet d’appeler une fonction exportée par une DLL Windows.
    • La syntaxe générale est :

      APIDLL32("User32.dll", "NomFonction", param1, param2, ...)

    Exemple avec SetCursorPos

    Pour déplacer le pointeur de la souris :


    // Déplace la souris à la position (200,150) en coordonnées écran
    APIDLL32("User32.dll", "SetCursorPos", 200, 150)


    Pour viser ton bouton BTH_OK


    1. Récupère les coordonnées du bouton dans la fenêtre (X, Y).
      • En Windev 5.5, tu peux utiliser Champ..X et Champ..Y (selon la version exacte, parfois X(BTH_OK) et Y(BTH_OK)).

    2. Convertis-les en coordonnées écran si nécessaire (via APIDLL32("User32.dll","ClientToScreen", ...)).
    3. Passe ces coordonnées à SetCursorPos.

    Exemple schématique

    pascal

    // Supposons que BTH_OK est à la position (X(BTH_OK), Y(BTH_OK)) dans la fenêtre
    xPos = X(BTH_OK)
    yPos = Y(BTH_OK)

    // Conversion en coordonnées écran si besoin
    // ... appel à ClientToScreen via APIDLL32 ...

    // Déplacement du curseur
    APIDLL32("User32.dll", "SetCursorPos", xPos, yPos)


    👉 Donc oui, dans Windev 5.5 c’est bien APIDLL32 qu’il faut utiliser pour appeler SetCursorPos ou ClientToScreen.
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko :zen:

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 338
    Par défaut
    Bonjour,

    Exemple typique : sous windev 5.5 c'est AppelDLL32(), APIDLL32 n'existe pas !

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 310
    Par défaut
    Citation Envoyé par lubinfo Voir le message
    Bonjour,

    Exemple typique : sous windev 5.5 c'est AppelDLL32(), APIDLL32 n'existe pas !
    Hello,
    ce qui prouve que les I.A sont un peu à la ramasse quand il s'agit de windev surtout sur les versions anciennes.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko :zen:

  5. #5
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 667
    Par défaut
    Bonjour,

    Je m'immisce dans cette discussion : pour contourner les "manques" de WD5.5, je te conseille :
    1. de rechercher quelles API utiliser avec une recherche gogol et de regarder le typage avec le WDAPI que tu as dans les versions récentes.
    2. De faire un lanceAppli vers un exe développé en version plus récente dans le cas d'un "gros morceau".
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 338
    Par défaut
    Bonjour,

    En fait curseurpos(cpClient,BTN_OK..Colonne+BTN_OK..largeur/2,BTN_OK..Ligne+BTN_OK..hauteur/2) fonctionne en mode exécutable mais pas en mode test.

    Cela est peut-être dû au fait que j'exécute windev 5.5 dans une machine virtuelle Virtual Box Windows XP.

    Merci

  7. #7
    Membre Expert
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 1 165
    Par défaut
    Citation Envoyé par lubinfo Voir le message
    Bonjour,

    En fait curseurpos(cpClient,BTN_OK..Colonne+BTN_OK..largeur/2,BTN_OK..Ligne+BTN_OK..hauteur/2) fonctionne en mode exécutable mais pas en mode test.

    Cela est peut-être dû au fait que j'exécute windev 5.5 dans une machine virtuelle Virtual Box Windows XP.

    Merci
    Bonsoir lubinfo,

    Sous windows 7 ça fonctionne en mode test.

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 338
    Par défaut
    Citation Envoyé par serendib Voir le message
    Bonsoir lubinfo,

    Sous windows 7 ça fonctionne en mode test.
    Bonsoir,

    C'est donc sans doute lié à l'utilisation d'une VM (ou bien de XP d'ailleurs).

    Pour en avoir le coeur net je sortirais une machine XP de la naphtaline !

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/02/2018, 14h20
  2. Idées de fonctions standards pour manipuler les pointeurs
    Par darkwall_37 dans le forum Débuter
    Réponses: 25
    Dernier message: 20/07/2016, 23h36
  3. Réponses: 3
    Dernier message: 13/10/2012, 16h02
  4. aide pour changer le pointeur de la souris
    Par samia21 dans le forum IHM
    Réponses: 6
    Dernier message: 25/04/2008, 15h56
  5. Réponses: 3
    Dernier message: 02/09/2002, 19h49

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