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

C Discussion :

Langage C et utilisation de la souris.


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 18
    Points : 16
    Points
    16
    Par défaut Langage C et utilisation de la souris.
    Bonjour,

    Dépuis un moment je cherche des informations sur le fonctionnement de la souris en langage C. J'ai lu beaucoup de tutos sur les interrupions mais en vain car je n'ai toujours pas trouver la solution à mon problème.
    Mon rêve est de pouvoir utiliser la souris dans mon programme. (Plus précisement, le curseur de la souris apparait dans le programme mais quand je clique sur un bouton de la souris rien ne se passe.)

    Exemple:
    Supposons que tout se passe en mode graphique sous l'environnement turbo c. Après initialisation de toutes les bibliothèques nécessaires, créons deux rectangles avec la fonction bar et mettons du texte à l'interieur. Ensuite, mettons derriere chaque rectangle un programme. La question est la suivante:
    ayant déjà le curseur de la souris qui s'affiche, comment faire en sorte que, dès que l'utilisateur clique sur le bouton gauche de sa souris, le programme recupère les coordonnées de la position du curseur et si possible lance le programme qui se trouve à cet endroit?

    Merci d'avance!

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Bref, tu veux de la doc sur l'utilisation de la souris sous DOS 16 bits ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Citation Envoyé par un ancien prof à moi
    Ah ! Il y a bien longtemps que j'avais étudié ces questions en détail.Deux solutions ont retenu mon attention. Si tu as une souris série, connectée effectivement sur le port COM1 ou COM2, les programmes sous interruption que tu as pu monter s'appliquent. Dans le temps, certaines souris envoyaient 5 octets par évènement. Un évènement couvre toute modification d'état de la souris (Boutons, déplacement).
    Puis les souris série se sont mises à n'envoyer plus que 3 octets, et apparemment, cette situation a perdurée. Les drivers de souris sont alors devenus standards : toutes les souris fonctionnent selon le même schéma. Les drivers sont devenus interchangeables.

    Les format des 3 octets est facilement identifiable expérimentalement. En effet, tu devrais retrouver que le bit de poids fort du premier octet contient, par exemple l'état du bouton gauche. Les 2 octets suivants contiennent l'état des boutons du milieu et l'état du bouton droit. S'ensuit, (de mémoire!) codé sur 10 bits, la position courante suivant X, puis, sur 10 bits, la position courante sur Y. Puis il y a les facteurs soit de vitesse soit d'accélélration, dont, à priori tu n'as rien à faire, sauf pour améliorer le confort de l'utilisateur. Le tapis de souris étant de surface limitée, un mouvement brusque vers le haut provoquera un glissement vers le bas du curseur afin d'améliorer le confort.

    Bref, encore un truc compliqué !
    Maintenant, sous dos, avec un driver (MOUSE.COM ou MOUSE.SYS), le driver installe des services accessibles via l'interruption 33h. Mais je n'ai plus d'infos sur ces choses. Je pense que tu devrais trouver facilement les infos sur Internet.

    Tu devras utiliser la fonction int86() et les fonctions apparentées afin d'effectuer un appel système.
    Si tu as des difficultés, intéresse-toi à l'appel système 16h qui est facile car c'est pour lire les caractères provenant du clavier.
    Notre outils HelpPC que tu trouveras sur internet décrit cela très bien ! Bon courage ...

    Tu verras, rien de difficile !
    A+
    Et je n'en sais pas vraiment plus...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    oui, pas de refus. Avez-vous un lien pour moi?
    Merci!

  5. #5
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    http://www.cs.cmu.edu/~ralf/ devrait avoir des infos sur l'utilisation de l'interruption 33h.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par gazere Voir le message
    Dépuis un moment je cherche des informations sur le fonctionnement de la souris en langage C.
    Ca n'existe pas. La souris est gérée par la machine et donc par le système. Il n'y a pas de souris en langage C.
    Mon rêve est de pouvoir utiliser la souris dans mon programme. (Plus précisement, le curseur de la souris apparait dans le programme mais quand je clique sur un bouton de la souris rien ne se passe.)

    Exemple:
    Supposons que tout se passe en mode graphique sous l'environnement turbo c. Après initialisation de toutes les bibliothèques nécessaires, créons deux rectangles avec la fonction bar et mettons du texte à l'interieur. Ensuite, mettons derriere chaque rectangle un programme. La question est la suivante:
    ayant déjà le curseur de la souris qui s'affiche, comment faire en sorte que, dès que l'utilisateur clique sur le bouton gauche de sa souris, le programme recupère les coordonnées de la position du curseur et si possible lance le programme qui se trouve à ce endroit?
    Tu programmes sous DOS ? int 33h.

    http://delahaye.emmanuel.free.fr/clib/pcdos/
    mouse.h/mouse.c
    Pas de Wi-Fi à la maison : CPL

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

Discussions similaires

  1. [Choix langage] Utiliser/Déplacer la souris/clavier
    Par Mindless dans le forum Windows
    Réponses: 5
    Dernier message: 22/01/2008, 10h13
  2. [C#] utilisation de la souris dans une windows form
    Par dimmak dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/03/2006, 23h21
  3. Utilisation de la souris en console
    Par Geoff-sk8 dans le forum C
    Réponses: 3
    Dernier message: 16/02/2006, 22h32
  4. [TP]Utilisation de la souris en haute résolution
    Par Gabi dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 08/01/2004, 18h46
  5. Réponses: 2
    Dernier message: 11/07/2002, 08h31

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