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

  FORUM HardWare.fr
  Programmation

  Avoir les positions de la souris en mode graphique sous DOS...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Avoir les positions de la souris en mode graphique sous DOS...

n°70040
Un4GivN
Posté le 06-11-2001 à 16:59:43  profilanswer
 

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 !

mood
Publicité
Posté le 06-11-2001 à 16:59:43  profilanswer
 

n°70047
BENB
100% Lux.
Posté le 06-11-2001 à 17:24:38  profilanswer
 

pour formatter le texte sprintf...
 
pour la souris il faut aller dans les interruptions du Dos je ne sais pas faire autrement...

n°70052
n0mad
inscrit au XXe siècle
Posté le 06-11-2001 à 17:37:01  profilanswer
 

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 ?


---------------
Pipiru piru piru pipiru pi
n°70056
Un4GivN
Posté le 06-11-2001 à 17:59:11  profilanswer
 

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 ) ??

n°70059
BENB
100% Lux.
Posté le 06-11-2001 à 18:07:46  profilanswer
 

Tu peux fixer les maxis de la zone virtuelle, mais il ne faut pas qu'elle soit trop grande...

n°70061
n0mad
inscrit au XXe siècle
Posté le 06-11-2001 à 18:11:55  profilanswer
 

Si tu connais, y a rien à ajouter.  
La conversion se fait à la main.


---------------
Pipiru piru piru pipiru pi
n°70083
Un4GivN
Posté le 06-11-2001 à 19:45:05  profilanswer
 

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 !

n°70110
Un4GivN
Posté le 06-11-2001 à 20:58:52  profilanswer
 

Allllllo ?

n°70164
ethernal
Chercheur de vérité...
Posté le 07-11-2001 à 00:07:54  profilanswer
 

ç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]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Avoir les positions de la souris en mode graphique sous DOS...

 

Sujets relatifs
[VB] ou Delphi : Comment faire bouger la souris et émuler un clic[VB] Bouger la souris et émuler les clics
Scan s'IP ss Ms-DosSCILAB > petit probleme graphique
La commande DOS pour renommer c'est quoi encore ?[VC++]clics souris
[concerne le DOS]Utilisation de variable en MS-DOS ?
[C/allegro]mode superieurs a 320*240 marchent pasSpecial Dos et echo
Plus de sujets relatifs à : Avoir les positions de la souris en mode graphique sous DOS...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR