Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Invité de passage
    Inscrit en
    février 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : février 2010
    Messages : 24
    Points : 4
    Points
    4

    Par défaut code pour utiliser la molette de la souris ?

    Salut.

    je cherche un code qui permet d'utiliser la molette de souris sous Turbo c,
    ou code::block .

    il s'agit de la programmation system, c'est a dire quelle est la fonction qui permet d'utiliser la molette de la souris ?



  2. #2
    Rédacteur/Modérateur
    Avatar de Melem
    Homme Profil pro Jessee Michaël Christian Edouard
    Ingénieur développement logiciels
    Inscrit en
    janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Nom : Homme Jessee Michaël Christian Edouard
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : janvier 2006
    Messages : 3 656
    Points : 8 149
    Points
    8 149

    Par défaut

    Avec Turbo C, c'est-à-dire sous DOS, il faut utiliser l'interruption 33h. Tu trouveras facilement de la doc sur cette interruption en parcourant le net.

    Sous Code::Blocks, donc avec probablement un compilateur pour Windows (vu le lien avec MS-DOS), ça dépend de ce que tu veux faire. Pour intercepter les événements de la souris, il faut traiter les messages tels que WM_MOUSEWHEEL et compagnie. Pour contrôler la souris, il faudra plutôt utiliser des fonctions comme mouse_event. Dans tous les cas, il s'agira de faire de faire de la programmation Win32, c'est-à-dire en utilisant l'API Win32.

    Bonne recherche.

  3. #3
    Invité de passage
    Inscrit en
    février 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : février 2010
    Messages : 24
    Points : 4
    Points
    4

    Par défaut

    salut.

    je travail avec turbo c (sous dos ou console)
    j'ai chercher et je n'ai rien trouver, peut être que c'est un secret.

    a++

    bonne fin d'année

  4. #4
    Rédacteur/Modérateur
    Avatar de Melem
    Homme Profil pro Jessee Michaël Christian Edouard
    Ingénieur développement logiciels
    Inscrit en
    janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Nom : Homme Jessee Michaël Christian Edouard
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : janvier 2006
    Messages : 3 656
    Points : 8 149
    Points
    8 149

    Par défaut

    Voici un exemple de code qui met en oeuvre l'interruption 33h, trouvé sur angelfire.
    Code :
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    /* Demonstrates the most basic mouse function */
    #include <conio.h>
    #include <stdio.h>
    #include <dos.h>// prototypes 
    int initialize_mouse(); 
    void reset_mouse (); 
    void show_mouse_pointer (); 
    void hide_mouse_pointer(); 
    void get_mouse_position (int *x, int *y, int *mousebutton); 
    void show_mouse_coordinate(); 
    void clear_mouse_coordinate (); 
     
    union REGS iReg, oReg; 
    struct SREGS segregs; 
    int c, numbuttons, oldmouse, mousebutton, movx, movy; float mouseversion;
    int Quit; 
    int x,y,Buttons,OldX,OldY; 
     
    void main () 
     { _setcursortype (_NOCURSOR);
       clrscr(); 
       gotoxy (15,5);cputs ("Mouse Movement Demonstration Program");
       gotoxy (15,6);cputs ("Written For PDRM staff by Kamal Zamli");
       show_mouse_pointer();                            
       gotoxy(18,9);puts("*****************************************");
       gotoxy (18,10);puts("Click Here to Quit");      
       gotoxy(18,11);puts("**************************************");
       Quit=0; 
       OldX=-1; 
       OldY=-1; 
       while (!Quit) 
        { 
         get_mouse_position(&x,&y,&Buttons);
         if ((OldX != x) || (OldY != y)) 
           { 
            clear_mouse_coordinate(); 
            show_mouse_coordinate();
            OldX=x; 
            OldY=y; 
           } 
        if (((x>=15) & (x<=35)) & ((y==9)) & (Buttons==1)) 
          { 
            Quit=1; 
          }
     } 
     hide_mouse_pointer(); 
     reset_mouse(); 
     clrscr();
     _setcursortype (_NORMALCURSOR); 
    } 
     
    void clear_mouse_coordinate() 
     { 
      hide_mouse_pointer();
      gotoxy (25,1); puts (" "); 
      gotoxy (25,2); puts (" ");
      show_mouse_pointer(); 
     } 
     
    void show_mouse_coordinate () 
     { 
      char xstring[10],ystring[10];
      hide_mouse_pointer(); 
      sprintf (xstring,"x = %d",x); 
      sprintf (ystring,"y= %d",y); 
      gotoxy (25,1);puts (xstring); 
      gotoxy (25,2);puts (ystring);
      show_mouse_pointer(); 
     } 
     
    int initialize_mouse () 
     { 
      iReg.x.ax = 0; 
      int86(0x33, &iReg, &oReg); 
      if (oReg.x.ax == 0xFFFF) 
       return (oReg.x.bx);
      else return 0; 
    } 
     
    void reset_mouse () 
     { 
      iReg.x.ax = 0; 
      int86 (0x33, &iReg,&oReg); 
     } 
     
    void show_mouse_pointer () 
     { 
      iReg.x.ax = 1; 
      int86 (0x33,&iReg, &oReg); 
     } 
     
    void hide_mouse_pointer () 
     { 
      iReg.x.ax = 2; 
      int86(0x33, &iReg, &oReg); 
     
     }
     
     void get_mouse_position (int *x, int *y,int *mousebutton) 
    { 
     iReg.x.ax = 3; 
     int86 (0x33, &iReg, &oReg);
     *x = oReg.x.cx / 8; 
     *y = oReg.x.dx / 8; 
     *mousebutton = oReg.x.bx; 
     }
    Lorsque tu auras compris comment ça marche, tu pourras y ajouter le support de la molette (mouse wheel) en te faisant aider de cette doc qui explique comment l'utiliser avec l'interruption 33h. Avoir une doc bien claire sur les interruptions en général aussi pourrait t'aider à mieux comprendre tout cela.

  5. #5
    Invité de passage
    Inscrit en
    février 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : février 2010
    Messages : 24
    Points : 4
    Points
    4

    Par défaut

    Merci beaucoup.

    j'ai trouver aussi une documentation interessante sur la sourie :

    http://cmp.felk.cvut.cz/~pisa/linux/mousedrivers.pdf

    je cherche encore un exemple de code, je n’oublierai pas de le poster
    s'il fonctionne bien

    a++

  6. #6
    Rédacteur/Modérateur
    Avatar de Melem
    Homme Profil pro Jessee Michaël Christian Edouard
    Ingénieur développement logiciels
    Inscrit en
    janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Nom : Homme Jessee Michaël Christian Edouard
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : janvier 2006
    Messages : 3 656
    Points : 8 149
    Points
    8 149

    Par défaut

    Ah ... tu vois bien que c'est pas secret .

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •