Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3304 connectés 

 


Dernière réponse
Sujet : Avoir les positions de la souris en mode graphique sous DOS...
ethernal ça va te plaire je pense, c'est un prog qu'on avait fait en 1ère graduat.
En gros la position X du curseur se trouve dans le registre regs.x.cx et y dans regs.x.dx;
 
/**************************************************************
 *            SOURIS2.C : Gestion de la souris                *
 **************************************************************/
#include "header.c"
 
 
union REGS regs;
int x,y;
extern int fin;
 
void test_mouse() /* Teste si une souris est connect?e */
{
 regs.x.ax= 0;      /* Type d'interruption 0= Test */
 int86(0x33, ®s, ®s); /* Interruption 33h pour init. la souris */
 if (!regs.x.ax)          /* Teste si la souris est trouvée */
   {
    printf("Souris non trouv?e\n" );
    exit(1);
    getch();
   }
}
 
void press_Lbutton()
{
 regs.x.ax= 6;      /* Type d'interruption 3= position du curseur */
 regs.x.bx= 0;        /* met le registre à 0 (bouton de gauche) */
 int86(0x33, ®s, ®s); /* Interruption 33h pour init. la souris */
 x= regs.x.cx;   /* CX= la position X de la souris */
 y= regs.x.dx;                  /* DX= la position Y de la souris */
 return;
}
 
void display_mouse()  /* Afiche le curseur de la souris */
{
 regs.x.ax= 1;      /* Type d'interruption 1= Affiche curseur */
 int86(0x33, ®s,®s);
 return;
}
 
void hide_mouse()     /* Cache le curseur de la souris */
{                           /* Type d'interruption 2= cache curseur */
 regs.x.ax=2;
 int86(0x33, ®s, ®s);
}

 

[edtdd]--Message édité par ethernal--[/edtdd]


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
ethernal ça va te plaire je pense, c'est un prog qu'on avait fait en 1ère graduat.
En gros la position X du curseur se trouve dans le registre regs.x.cx et y dans regs.x.dx;
 
/**************************************************************
 *            SOURIS2.C : Gestion de la souris                *
 **************************************************************/
#include "header.c"
 
 
union REGS regs;
int x,y;
extern int fin;
 
void test_mouse() /* Teste si une souris est connect?e */
{
 regs.x.ax= 0;      /* Type d'interruption 0= Test */
 int86(0x33, ®s, ®s); /* Interruption 33h pour init. la souris */
 if (!regs.x.ax)          /* Teste si la souris est trouvée */
   {
    printf("Souris non trouv?e\n" );
    exit(1);
    getch();
   }
}
 
void press_Lbutton()
{
 regs.x.ax= 6;      /* Type d'interruption 3= position du curseur */
 regs.x.bx= 0;        /* met le registre à 0 (bouton de gauche) */
 int86(0x33, ®s, ®s); /* Interruption 33h pour init. la souris */
 x= regs.x.cx;   /* CX= la position X de la souris */
 y= regs.x.dx;                  /* DX= la position Y de la souris */
 return;
}
 
void display_mouse()  /* Afiche le curseur de la souris */
{
 regs.x.ax= 1;      /* Type d'interruption 1= Affiche curseur */
 int86(0x33, ®s,®s);
 return;
}
 
void hide_mouse()     /* Cache le curseur de la souris */
{                           /* Type d'interruption 2= cache curseur */
 regs.x.ax=2;
 int86(0x33, ®s, ®s);
}

 

[edtdd]--Message édité par ethernal--[/edtdd]

Un4GivN Allllllo ?
Un4GivN Ya personne qui peut m'expliquer davantage ?? Je veux avoir 2 variables qui contiennent la position de ma souris, mode graphique sous DOS, 640 X 480. Aidez-moi !
n0mad Si tu connais, y a rien à ajouter.  
La conversion se fait à la main.
BENB Tu peux fixer les maxis de la zone virtuelle, mais il ne faut pas qu'elle soit trop grande...
Un4GivN Oui je sais tout ça. Mais c'est comment faire pour convertir les données de la plage virtuelle de déplacement de la souris en véritables coordonnées ( pixels ) ??
n0mad Pour récupérer les positions de la souris sour DOS :  
Il faut utiliser l'interruption 33h (ah que de bons souvenir d'arrachage de cheveux...) avec toutes les fonctions.
 
Il faudrait que je vérifie dans la bible mais il me semble que la position de la souris  est lue avec la fonction 03h.
L'initialisation : 00h
Masquer/Afficher le pointeur : 02h et 01h
 
Les valeurs contenues dans les registres sont en "coordonnées virtuelles de souris" ;) et non en pixel, ça serait trop simple...
 
Maintenant petite question : pourquoi persister à faire des appli DOS alors que d'ici un ou 2, DOS aura définitivement disparu ?
BENB pour formatter le texte sprintf...
 
pour la souris il faut aller dans les interruptions du Dos je ne sais pas faire autrement...
Un4GivN Salut ! Je suis en train de me faire un petit gestionnaire de fichiers en C sous DOS, mode graphique avec Turbo C++ 3.
 
Voici mon initialisation.
 
void init_mode_graphique(void)
{
  /* request autodetection */
  int gdriver = DETECT, gmode, errorcode;
 
  /* initialize graphics and local variables */
  initgraph(&gdriver, &gmode, "" );
 
  /* read result of initialization */
  errorcode = graphresult();
 
  if (errorcode != grOk)
  {
   printf("Erreur graphique : %s\n", grapherrormsg(errorcode));
   printf("Veuillez presser une touche pour quitter..." );
   getch();
  }
}
 
Cela me donne du 640 X 480. J'active la souris. J'aimerais savoir comment je pourrais avoir les coordonnées de la souris. Également, comment faire pour afficher des variables ? PRINTF ne fonctionne pas, et outtextxy ne semble pas permettre l'affichage de variables. Merci d'avance j'en ai vraiment besoin !

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)