begin process at 2012 05 27 19:23:13
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Périphériques

 > LA SOURIS [BORLAND TURBO C++ 3.0]

LA SOURIS [BORLAND TURBO C++ 3.0]


 Information sur la source

Note :
6,25 / 10 - par 4 personnes
6,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Périphériques Niveau :Initié Date de création :01/04/2002 Date de mise à jour :01/04/2002 14:02:28 Vu :15 157

Auteur : BeLZeL

Ecrire un message privé
Site perso
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description


Le programme indique la position du curseur et l'état du clic gauche et droit de la souris.

Certains codes montrent comment gérer la souris avec SetCursorPos, mais les anciens compilateurs DOS ne possèdent pas la librairie windows.h nécessaire à l'utilisation de SetCursorPos.

Pour y remédier, l'emploi du langage assembleur est obligatoire (enfin, je n'ai trouvé que cela). Il n'est pas difficile à utiliser sous Borland Turbo C++ 3.0. Il faut mettre une valeur dans le registre AX (0 à 3) et générer une interruption (ici, l'interruption n°33h).

Source

  • #include <stdlib.h>
  • #include <stdio.h>
  • #include <conio.h>
  • #include <dos.h>
  • void main()
  • {
  • int x, y, clic;
  • clrscr();
  • _AX=0; geninterrupt(0x33); // initialise le driver de la souris
  • _AX=1; geninterrupt(0x33); // affiche le curseur de la souris
  • // _AX=2; geninterrupt(0x33); // efface le curseur de la souris
  • _setcursortype(_NOCURSOR); // on retire le "curseur du clavier"
  • do
  • {
  • _AX=3; geninterrupt(0x33); // recherche des infos de la souris
  • clic=_BX; // le clic se trouve dans _BX
  • x=_CX; // l'abscisse dans le registre _CX
  • y=_DX; // la coordonn,e dans _DX
  • gotoxy(1, 1);
  • printf("Position : %d - %d ", x, y); // on affiche la position
  • // si on ne clique pas
  • if (clic == 0)
  • {
  • gotoxy (1, 2);
  • printf ("Clic Gauche : OFF");
  • gotoxy (1, 3);
  • printf ("Clic Droit : OFF ");
  • }
  • // clic gauche
  • if (clic & 1)
  • {
  • gotoxy (1, 2);
  • printf ("Clic Gauche : ON ");
  • }
  • // clic droit
  • if (clic & 2)
  • {
  • gotoxy (1, 3);
  • printf ("Clic Droit : ON ");
  • }
  • }
  • while (!kbhit()); // tant qu'on appuie sur aucune touche, on boucle
  • }
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>

void main()
 {
	int x, y, clic;
	clrscr();
	_AX=0; geninterrupt(0x33);	// initialise le driver de la souris
	_AX=1; geninterrupt(0x33);	// affiche le curseur de la souris
//	_AX=2; geninterrupt(0x33);	// efface le curseur de la souris
	_setcursortype(_NOCURSOR);	// on retire le "curseur du clavier"

	do
	 {
		_AX=3; geninterrupt(0x33);	// recherche des infos de la souris
		clic=_BX;			// le clic se trouve dans _BX
		x=_CX;			// l'abscisse dans le registre _CX
		y=_DX;			// la coordonn,e dans _DX
		gotoxy(1, 1);
		printf("Position : %d - %d   ", x, y);	// on affiche la position

		// si on ne clique pas
		if (clic == 0)
		 {
			gotoxy (1, 2);
			printf ("Clic Gauche : OFF");
			gotoxy (1, 3);
			printf ("Clic Droit : OFF ");
		 }

		// clic gauche
		if (clic & 1)
		 {
			gotoxy (1, 2);
			printf ("Clic Gauche : ON ");
		 }

		// clic droit
		if (clic & 2)
		 {
			gotoxy (1, 3);
			printf ("Clic Droit : ON  ");
		 }

	 }
	while (!kbhit());	// tant qu'on appuie sur aucune touche, on boucle
 } 

 Conclusion


BeLZeL (belzel@free.fr)


 Sources du même auteur

Source avec Zip Source avec une capture VORTEX [OPENGL DEVCPP]
Source avec Zip Source avec une capture MODÈLE 3D TEXTURÉ [OPENGL & ASE & RAW & DEVCPP]
Source avec Zip Source avec une capture LIMITER NOMBRE FPS [OPENGL & QUERYPERFORMANCE & DEVCPP]
Source avec Zip [HOOK CLAVIER] FICHIER TEXTE AVEC GESTION DES DEAD KEYS [DEV...
Source avec Zip Source avec une capture LOAD TGA / OPENGL [DEV-C++ 4.9.5.0]

 Sources de la même categorie

Source avec Zip Source avec une capture RS232 ET PORT // par morphixx
Source avec Zip Source avec une capture [DEV-C++] GESTION DU PORT PARALLÈLE par victorcoasne
Source avec Zip Source avec une capture FAIRE GLISSER LA SOURIS par shorzy
Source avec Zip COMMUNICATION RS232 VIA PORT COM par MadMax1024
Source avec Zip Source avec une capture EXTINCTION ET REDEMARRAGE DE VOTRE MONITEUR À UNE HEURE PRÉC... par Yost

Commentaires et avis

Commentaire de eldered le 25/08/2003 23:03:04

Oki merci, c super, j'en avais justement besoin !!! ++

Commentaire de eldered le 09/11/2003 11:11:47

Salut ,

J'ai vu ton code pour la souris sur TC, qui est trés interessant d'ailleurs, et je me pose la question suivante :

Peut on modifier la valeur de _CX et _DX afin de replacer la souris à l'endroit que l'on veut ?

Je m'explique, je suis en train de programmer un casse brique et je me sert de ton code pour deplacer la raquette,
Cependant, les limites de ma table de jeux ne sont pas (0.0) / (640/480) mais  (10,10) / (510/460), il faut donc,
Lorsque je me retrouve a l'exterieur de ces limites que je replace le curseur de la souris afin de ne pas attendre
Le retour du curseur par exemple.

Voila, en esperant une réponse !
@ micalement , Eddy

Commentaire de eldered le 14/12/2003 16:55:57

Pour ceux qui ont le meme probleme, voici la solution :

http://www.cppfrance.com/code.aspx?ID=17856

Vous y toruverez une librairie avec quelque fonction en assembleur qui permet de resoudre le probléme de "limites" que j'ai rencontré pour programmer un casse-briques. Voila !

++

Commentaire de 751 le 10/02/2004 17:24:08

Voici une solution: pour Placer la souris aux coordonées désirées, faire apparaitre, faire disparaitre, capter l'interruption, contrôler si la souris est dans le cadre( limities) désirés et ou au besoin  faire les contrôles necessaires, si l'utilsateur a fait un clic avec le bouton droit ou gauche.
Pour les utilisations voir dans les progs au:
http://www.cppfrance.com/listeauteur2.aspx?ID=8416

void movetoxy(int x, int y)
{
   union REGS regs;
   regs.h.ah = 2;  /* set cursor position */
   regs.h.dh = y;
   regs.h.dl = x;
   regs.h.bh = 0;  /* video page 0 */
   int86(VIDEO, &regs, &regs);
}

void initialisersouris(int *ok,int *nbouton)
{
  union REGS rin,rout;
  rin.x.ax=0;
  int86(0x33,&rin,&rout);
  *ok=rout.x.ax;
  *nbouton=rout.x.bx;
  return;
}


void sourison()
{
  union REGS rin,rout;
  rin.x.ax=1;
  int86(0x33,&rin,&rout);
  return;
}

void sourisoff()
{
  union REGS rin,rout;
  rin.x.ax=0;
  int86(0x33,&rin,&rout);
  return;
}

void getsourisxy(int *xs,int *ys,int *bg,int *bd)
{
  union REGS rin,rout;
  rin.x.ax=3;
  int86(0x33,&rin,&rout);
  *xs=rout.x.cx;
  *ys=rout.x.dx;
  *bg=(rout.x.bx & 1)==1;
  *bd=(rout.x.bx & 2)==2;
  return;
}

void setsouris(int x,int y)
{
  union REGS rin,rout;
  rin.x.ax=4;
  rin.x.cx=x;
  rin.x.dx=y;
  int86(0x33,&rin,&rout);
  return;
}

int souris_inte(int a,int b,int c,int d)
{
  int xs,ys,bd,bg;
  getsourisxy(&xs,&ys,&bg,&bd);
  if((a&lt;=xs)&&(b&lt;=ys)&&(c&gt;=xs)&&(d&gt;=ys))
  return 1;
  else
  return 0;
}

int souris_ext(int a,int b,int c,int d)
{
  int xs,ys,bd,bg;
  getsourisxy(&xs,&ys,&bg,&bd);
  if((xs&lt;=a)||(ys&lt;=b)||(xs&gt;=c)||(ys&gt;=d))
  return 1;
  else
  return 0;
}

Commentaire de henock le 21/04/2005 22:00:58

c'est c'est justement ce que je cherche depuis un bon bout de temps et je crois qu'avec ça ma source paraitra bientot.merci pour la source           henock

      www.e-monsite.com/henockmermoz

Commentaire de zwawa89 le 21/08/2009 01:31:35

merci mes amis

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales