Manipulation de la souris en c ( turbo cpp )

Fermé
maverick1984 Messages postés 24 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 8 juin 2009 - 8 janv. 2008 à 23:12
 enokby - 13 nov. 2008 à 15:55
Bonjour,


Je compte énormément sur votre aide. Le programme ci dessous ne renvoit aucune erreur et s'execute tres bien, cependant je ne comprends pas pourquoi la souris n'apparait pas pour pouvoir faire des selections dans les menus. J'ai écri aussi une fonction pour la souris qui marche tres bien ( mais à part, me demander de vous l'envoyer au besoin ) mais je ne peux pas l'intégrer dans mon programme. Quelqu'un pourrait t'il s'il vous plait m'aider en me montrant où exactement mettre le programme de la souris pour qu'elle apparraisse à l'éxécution de mon programme tel que je puisse faire des choix avec la souris ????
Je vous remercie d'avance pour votre compréhension.
Je développe avec turbo cpp.


















#include <graphics.h>
#include <ctype.h>
/*#include <stream.h>*/
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <string.h>
union REGS reg;
void initm()
{
reg.x.ax=0x00;
int86(0x33,®,®);
}
void mouse_on(void)
{
reg.x.ax=0x01;
int86(0x33,®,®);
}
void mouse_off(void)
{
reg.x.ax=0x02;
int86(0x33,®,®);
}
int Xm(void)
{
reg.x.ax=0x03;
int86(0x33,®,®);
return(reg.x.cx);
}
int Ym(void)
{
reg.x.ax=0x03;
int86(0x33,®,®);
return(reg.x.dx);
}
int in_rec(int a,int b,int c,int d)
{
if ( ( Xm()<c ) && ( Xm()>a ) && ( Ym()<d ) && ( Ym()>b ) )
return(1);
else
return(0);
}
int etat(void)
{
reg.x.ax=0x03;
int86(0x33,®,®);
return(reg.x.bx);
}
void BOUTON(int x,int y,int dx,int dy,int col)
{ int i;
setfillstyle(1,col);
bar(x,y,dx,dy);
setcolor(15);
line(x+1,y+1,dx-1,y+1);
line(x+1,y+1,x+1,dy-1);
setcolor(0);
line(x,dy,dx,dy);
line(dx,y,dx,dy);
setcolor(8);
line(x+1,dy-1,dx-1,dy-1);
line(dx-1,y+1,dx-1,dy-1);
}void boutton(int x,int y,int z,int w,int c1,int c2,int c3)
{
setfillstyle(SOLID_FILL, c3) ; bar(x,y,z,w) ;
setcolor(c1) ; line(x,y,z,y) ; line(x,y,x,w) ;
setcolor(c2) ; line(x,w,z,w) ; line(z,y,z,w) ;
}
void boutton2(int x,int y,int z,int w,int c1,int c2,int c3)
{
setfillstyle(INTERLEAVE_FILL, c3) ; bar(x,y,z,w) ;
setcolor(c1) ; line(x,y,z,y) ; line(x,y,x,w) ;
setcolor(c2) ; line(x,w,z,w) ; line(z,y,z,w) ;
}
void boutton3(int x,int y,int z,int w,int c1,int c2)
{
setcolor(c1) ; line(x,y,z,y) ; line(x,y,x,w) ;
setcolor(c2) ; line(x,w,z,w) ; line(z,y,z,w) ;
}
void btn1(int x,int y,int z,int w)
{
setfillstyle(SOLID_FILL, 7) ; bar(x+2,y+2,z-2,w-2) ;
setcolor(15) ; line(x+1,y+1,z-2,y+1) ; line(x+1,y+1,x+1,w-2) ;
setcolor(7) ; line(x,y,z-1,y) ; line(x,y,x,w-1) ;
setcolor(8) ; line(z-1,y+1,z-1,w-1) ; line(x+1,w-1,z-1,w-1) ;
setcolor(0) ; line(z,y,z,w) ; line(x,w,z,w) ;
}
void btn2(int x,int y,int z,int w)
{
setcolor(15);rectangle(x,y,z,w);
rectangle(x+1,y+1,z,w);
setcolor(8);rectangle(x,y,z-1,w-1);
}
void btn3(int x,int y,int z,int w)
{
setcolor(15) ; line(z,y,z,w) ; line(x,w,z,w) ;
setcolor(8) ; line(x,y,z-1,y) ; line(x,y,x,w-1) ;
}
void boutton4(int x,int y,int z,int w)
{
boutton3(x,y,z,w,8,15);
boutton(x+1,y+1,z-1,w-1,0,7,15);
}
void fleche(int y,int z,int w)
{
int abc;
abc=(y+w)/2;
mouse_off();
setcolor(0);
line(z-13,abc-2,z-7,abc-2);
line(z-12,abc-1,z-8,abc-1);
line(z-11,abc,z-9,abc);
line(z-10,abc+1,z-10,abc+1);
mouse_on();
}
void btn(int y,int z,int w)
{
mouse_off();
setfillstyle(1,7);
bar(z-15,y+4,z-4,w-4);
setcolor(8);
line(z-3,y+3,z-3,w-3);
line(z-16,w-3,z-3,w-3);
setcolor(15);
line(z-16,y+3,z-4,y+3);
line(z-16,y+3,z-16,w-4);
setcolor(7);
line(z-17,y+2,z-3,y+2);
line(z-17,y+2,z-17,w-3);
setcolor(0);
line(z-2,y+1,z-2,w-2);
line(z-17,w-2,z-2,w-2);
mouse_on();
}
void fermer(int x,int y,int z,int w)
{
setfillstyle(1,7);
bar(x+2,y+2,z,w);
setcolor(0);
rectangle(x+1,y+1,z-1,w-1);
setcolor(8);
rectangle(x,y,z-1,w-1);
setcolor(15);
rectangle(x+1,y+1,z,w);
setcolor(8);
rectangle(x,y,z,w);
setcolor(0);
line(x+5,y+4,z-5,w-5);
line(x+5,y+5,z-5,w-4);
line(x+5,w-5,z-5,y+4);
line(x+5,w-4,z-5,y+5);
}
void boutton5(int x,int y,int z,int w)
{
mouse_off();
setfillstyle(1,15);
bar(x,y,z,w);
setcolor(8);
line(x,y,z-1,y);
line(x,y,x,w-1);
setcolor(15);
line(x,w,z,w);
line(z,y,z,w);
setcolor(7);
line(x+1,w-1,z-1,w-1);
line(z-1,y+1,z-1,w-1);
setcolor(0);
line(x+1,y+1,z-2,y+1);
line(x+1,y+1,x+1,w-2);
btn(y,z,w);
fleche(y,z,w);
mouse_on();
}
void Couleurs()
{
setpalette(6,9);
setpalette(10,36);
setpalette(11,38);
setpalette(14,45);
setpalette(2,32);
setpalette(9,8);
}
void listederoul(int x,int y,int z,int w,int c1)
{
int i;
mouse_off();
for(i=y;i<w;i++)
{
setcolor(0);
rectangle(x,y,z,i);
setfillstyle(1,c1);
bar(x+1,y+1,z-1,i-1);
if(i<=y+9)
delay(7);
if(i>=y+10 && i<y+18)
delay(5);
else
delay(2);
}
settextstyle(SMALL_FONT,0,4);
setcolor(9);
outtextxy(x+5,y+2,"FACTORISATION");
outtextxy(x+5,y+15,"METHODE DE NEWTON");
mouse_on();
}
void ChoixListeDeroul(int x,int y,int z,int w,int k)
{
mouse_off();
setfillstyle(1,15);
bar(x+1,y+1,z-1,w-1);
settextstyle(SMALL_FONT,0,4);
setcolor(9);
outtextxy(x+5,y+2,"FACTORISATION");
outtextxy(x+5,y+15,"METHODE DE NEWTON");
switch(k)
{
case 1 : setcolor(15);setfillstyle(1,4);
bar(x+3,y+2,z-3,y+14); outtextxy(x+5,y+2,"FACTORISATION");
break;
case 2 : setcolor(15);setfillstyle(1,4);
bar(x+3,y+15,z-3,y+27); outtextxy(x+5,y+15,"METHODE DE NEWTON");
break;
}
mouse_on();
}
char *Resultat(int k)
{
char *p;
p = (char *)malloc(sizeof(p)) ;
mouse_off();
boutton5(230,170,435,192);
mouse_on();
settextstyle(SMALL_FONT,0,4);
setfillstyle(1,15);setcolor(9);
switch (k)
{
case 1 :bar(233,173,416,189);
strcpy(p,"FACTORISATION");
setcolor(9) ;outtextxy(235,174,"FACTORISATION");
break;
case 2 :bar(233,173,416,189);
strcpy(p,"METHODE DE NEWTON");
setcolor(9) ; outtextxy(235,174,"METHODE DE NEWTON");
break;
}
return p;
}
void Effacer()
{
boutton(80,160,170,371,0,15,8);
setcolor(15) ;
outtextxy(100,182,"METHODES") ;
boutton(98,194,148,194,15,15,15) ;
outtextxy(95,233,"PARAMETRES") ;
boutton(92,245,155,245,15,15,15) ;
outtextxy(97,284,"RESULTATS") ;
boutton(94,296,152,296,15,15,15) ;
outtextxy(102,336,"EFFACER") ;
boutton(98,348,147,348,15,15,15) ;
boutton(81,385,489,405,15,0,7);
}
void Interface()
{
setpalette(4,29);
setpalette(9,8) ;
settextstyle(SMALL_FONT,0,4);
setfillstyle(10,1);
bar(0,0,645,480);
boutton(60,80,580,420,15,15,7);
boutton(61,80,579,419,15,15,7);
boutton(63,83,577,103,8,8,8);
boutton(80,110,318,130,0,15,7);
boutton(81,111,159,129,15,0,7);
boutton(160,111,238,129,15,0,7);
boutton(239,111,317,129,15,0,7);
setcolor(9) ;
outtextxy(95,115,"A PROPOS") ;
outtextxy(175,115,"METHODES") ;
outtextxy(258,115,"QUITTER") ;
fermer(556,85,571,101);
setcolor(15) ; outtextxy(70,88,"ANALYSE NUMERIQUE ... TP2") ;
Effacer() ;
boutton4(200,160,560,370) ;
boutton(80,384,560,406,0,15,7);
boutton(81,385,489,405,15,0,7);
outtextxy(300,390,"Commandes : ") ;
}
void Date(int x , int y)
{
struct date D ;
getdate(&D);
char CH[6] ;
setpalette(6,5);
setcolor(6);
sprintf(CH,"%d",D.da_day) ; outtextxy(x,y,CH) ;
sprintf(CH,"%d",D.da_mon) ; outtextxy(x+15,y,CH) ;
sprintf(CH,"%d",D.da_year) ; outtextxy(x+30,y,CH) ;
}
void Time(int x , int y)
{
struct time t;
static char s[10];
static sec=0;
gettime(&t);
if ( sec != t.ti_sec )
{
setcolor(7);
boutton(490,385,559,405,15,0,7);
outtextxy(x,y,s);
sprintf(s," %2d:%02d:%02d",t.ti_hour, t.ti_min, t.ti_sec);
setcolor(1);
boutton(490,385,559,405,15,0,7);
outtextxy(x,y,s);
sec=t.ti_sec;
}
}
void ChoixMenu(int k)
{
setpalette(5,32) ;
switch(k)
{
case 1 : Effacer() ; boutton(81,161,169,212,15,0,7);
outtextxy(100,182,"METHODES") ; setcolor(5) ;
outtextxy(93,390,"Le Choix Du M,thodes") ;
break ;
case 2 : Effacer() ; boutton(81,213,169,266,15,0,7);
outtextxy(95,233,"PARAMETRES") ; setcolor(5) ;
outtextxy(93,390,"La Saisie Des ParamStres") ;
break ;
case 3 : Effacer() ; boutton(81,267,169,319,15,0,7);
outtextxy(100,284,"RESULTATS") ; setcolor(5) ;
outtextxy(93,390,"La Solution Du Systeme Ou De L'Equation") ;
break ;
case 4 : Effacer() ; boutton(81,320,169,370,15,0,7);
outtextxy(100,336,"EFFACER") ; setcolor(5) ;
outtextxy(93,390,"Effacer") ;
break ;
}
}
void MenuMethode()
{
boutton(160,132,310,204,15,0,7);
boutton(165,135,185,199,8,8,8);
setcolor(7);
settextstyle(SMALL_FONT,1,4);
outtextxy(169,144,"METHODES");
settextstyle(SMALL_FONT,0,4);
setcolor(15);
outtextxy(196,142,"Factorisation");
outtextxy(196,162,"M,thode De GAUSS");
outtextxy(196,182,"M,thode De NEWTON");
}
void EffaceMenuMethode()
{
boutton(190,139,300,198,7,7,7) ;
settextstyle(SMALL_FONT,0,4);
setcolor(15);
outtextxy(196,142,"Factorisation");
outtextxy(196,162,"M,thode De GAUSS");
outtextxy(196,182,"M,thode De NEWTON");
}
void ChoixMethode(int k)
{
switch(k)
{
case 1 : EffaceMenuMethode() ; boutton(191,139,300,157,8,8,8) ;
setcolor(15) ; outtextxy(196,142,"Factorisation");
break ;
case 2 : EffaceMenuMethode() ;boutton(191,159,300,177,8,8,8) ;
setcolor(15) ; outtextxy(196,162,"M,thode De GAUSS");
break ;
case 3 : EffaceMenuMethode() ;boutton(191,179,300,197,8,8,8) ;
setcolor(15) ; outtextxy(196,182,"M,thode De NEWTON");
break ;
}
}
void Efface2()
{
boutton(70,131,570,372,7,7,7);
boutton4(200,160,560,370) ;
Effacer() ;
}
void Titre(char Ch[])
{
int i ;
settextstyle(TRIPLEX_FONT,0,3) ;
for ( i=0 ; i<5 ; i++ )
{
setcolor(0) ;
outtextxy(380-i,120+i,Ch) ;
}
setcolor(15) ;
outtextxy(380-i,120+i,Ch) ;
settextstyle(SMALL_FONT,0,4) ;
}
int Methode()
{
int k=0 , L=0 ;
char P ;
MenuMethode() ;
while (k!=5)
{
Date(490,165) ;
while ( Time(495,390) , !kbhit()) ;
P=getch();
switch(P)
{
case 80 : k++; if(k>3) k=1; ChoixMethode(k);
break;
case 72 : k--; if(k<1) k=3; ChoixMethode(k);
break ;
case 13 : switch(k)
{
case 1 : L = 1 ; k = 5 ; Efface2();
Titre("FACTORISATION") ;break ;
case 2 : L = 2 ; k = 5 ; Efface2() ;
Titre("M . GAUSS") ; break ;
case 3 : L = 3 ; k = 5 ; Efface2() ;
Titre("M . NEWTON") ; break ;
}
break ;
case 27 :
case 75 :
case 77 : k = 5 ; break ;
}
}
return L ;
}
void EffaceMenu_P()
{
boutton(81,111,159,129,15,0,7);
boutton(160,111,238,129,15,0,7);
boutton(239,111,317,129,15,0,7);
setcolor(9) ;
outtextxy(95,115,"A PROPOS") ;
outtextxy(175,115,"METHODES") ;
outtextxy(258,115,"QUITTER") ;
}
void ChoixMenu_P(int k)
{
switch(k)
{
case 1 : EffaceMenu_P() ; boutton(81,111,159,129,0,15,7);
outtextxy(95,115,"A PROPOS") ;
break ;
case 2 : EffaceMenu_P() ; boutton(160,111,238,129,0,15,7);
outtextxy(175,115,"METHODES") ;
break ;
case 3 : EffaceMenu_P() ; boutton(239,111,317,129,0,15,7);
outtextxy(258,115,"QUITTER") ;
break ;
}
}
int Menu_P()
{
int k=0 , L ;
char P ;
while (k!=5)
{
Date(490,165) ;
while ( Time(495,390) , !kbhit() ) ;
P=getch();
switch(P)
{
case 77 : k++; if(k>3) k=1; ChoixMenu_P(k);
break;
case 75 : k--; if(k<1) k=3; ChoixMenu_P(k);
break ;
case 13 : switch(k)
{
case 2 : L = Methode() ; k=5 ; break ;
case 3 : k=5 ; break ;
}
break ;
case 27 : k = 5 ;
break ;
}
}
return L ;
}
void main()
{

int gdriver= DETECT, gmode;

initgraph(&gdriver, &gmode,"c:\\cpp\\bgi");

int k=0 , L ;
char P ;
initm() ;
Interface() ;
L = Menu_P() ;
if ( L == 1 || L == 2 || L == 3 )
{
while (k!=5)
{
Date(490,165) ;
while ( Time(495,390) , !kbhit() ) ;
P=getch();
switch(P)
{
case 80 : k++; if(k>4) k=1; ChoixMenu(k);
break;
case 72 : k--; if(k<1) k=4; ChoixMenu(k);
break ;
case 27 : k = 5 ;
break ;
}
}
}
closegraph() ;
getch();
}
A voir également:

2 réponses

dandypunk Messages postés 831 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 11 septembre 2011 83
9 janv. 2008 à 03:43
Indente, commente après je pourrai éventuellement résoudreton problème.

En comentant tu verra peut êtte que ton pb est résolu
0
heu mec tu crois vraiment kon peut co;prende kelke chos a ta merde????
0