Spoolega
Messages postés
65
Date d'inscription
dimanche 8 janvier 2006
Statut
Membre
Dernière intervention
27 février 2011
1
21 mars 2006 à 12:35
Bonjour
Voilà un programme de gestion de la souris (différent de l'autre, mais qui marche tout aussi bien). Il gere la souris en mode graphique, ainsi que le déplacement d'un rectangle(quelques problèmes de trainées, mais bon...).
Il faut faire attention a la fonction void init(void); surtout la ligne:
initgraph(&gdriver, &gmode, "c:\\tc3\\bgi");
Car le chemin c:\\tc3\\bgi n'est surement pas bon dans ton cas, c'est pour aller chercher les fichers *.bgi pour la gestion du mode graphique (ca dépend peut être du compilo, j'utilise TC3 ...)
Donc voilà pour le code.
Sinon pour ton projet, moi, je testerais la position du curseur x et y dès que l'on clique sur le bouton 1 par exemple, et pour chaques champs tu lui donne un identifiant (de 0 à 4). Le champ 0 va du pixel X : 0 à 49, le champ 1 du pixel X : 50 à 99 ainsi de suite...
Un simple switch case est peut être une bonne solution (simple en tout cas.)
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <DOS.H>
#define MOUSE 0x33
void init(void);
void ActivMouse(void);
int ResetMouse(void);
void ShowMouse(void);
void HideMouse(void);
void ReadMouse(int *v,int *h,int *but);
struct menu{
int x, y;
};
void main (void)
{
struct menu menu1; /* structure sur les menus */
int Ver,Hor,But;
init(); /* appelle et initialisation du mode graphique */
menu1.x = 50;
menu1.y = 50;
rectangle(menu1.x,menu1.y, menu1.x+70, menu1.y+20);
ActivMouse(); /* initialisation de la souris */
ShowMouse(); /* on la montre a l cran */
do{
ReadMouse(&Ver,&Hor,&But);
printf("Ver=%i Hor=%i But=%i x=%i y=%i\r", Ver, Hor, But, menu1.x, menu1.y);
if(But==1)
if(Ver>menu1.x && Ver<menu1.x+70 && Hor>menu1.y && Hor<menu1.y+20)
{
do{
ReadMouse(&Ver,&Hor,&But);
menu1.x = Ver;
menu1.y = Hor;
rectangle(menu1.x, menu1.y, menu1.x+70, menu1.y+20);
}while(But==1);
HideMouse();
cleardevice();
rectangle(menu1.x, menu1.y, menu1.x+70, menu1.y+20);
ShowMouse();
}
/* pour quitter=> Appuyer sur les 2 boutonsde la souris en mme temps */
/* Leger pb=> Alterner 2 & 3 si pb... */
}while(But!=3);
closegraph(); /* fermeture du mode graphique */
}
void ActivMouse(void)
{
_AX=32;
geninterrupt(MOUSE);
}
int ResetMouse()
{
_AX=0;
geninterrupt(MOUSE);
return(_AX);
}
void ShowMouse()
{
_AX=1;
geninterrupt(MOUSE);
}
void HideMouse()
{
_AX=2;
geninterrupt(MOUSE);
}
void ReadMouse(int *v,int *h,int *but)
{
int temp;
//int cas,i,j;
_AX=3;
geninterrupt(MOUSE);
temp=_BX;
*but=temp;
*v=_CX;
*h=_DX;
}
void init(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
/* gestion de la souris */
/* initialize graphics mode */
initgraph(&gdriver, &gmode, "c:\\tc3\\bgi");
/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* return with error code */
}
}