Ma chinui de ceva timp sa fac niste butoane in c++ si nu iese o chestie. Ele apar pe ecran si cand dau rollover cu mouseul peste ele isi schimba culoare, dar "tremura" incontinuu...probabil e de la do{....}while(); dar nu am gasit alta solutie. Uitati algoritmul
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
#include<dos.h>
#include<stdlib.h>
/***************************************************
********* MOUSE COMMANDS ***************************
***************************************************/
int xpos1,ypos1,click;
union REGS in,out;
int callmouse()
{
in.x.ax=1;
int86(51,&in,&out);
return 1;
}
void mouseposi(int&xpos1,int&ypos1,int&click)
{
in.x.ax=3;
int86(51,&in,&out);
click=out.x.bx;
xpos1=out.x.cx;
ypos1=out.x.dx;
}
void setposi(int&xpos1,int&ypos1)
{
in.x.ax=4;
in.x.cx=xpos1;
in.x.dx=ypos1;
int86(51,&in,&out);
}
int mousehide()
{
in.x.ax=2;
int86(51,&in,&out);
return 1;
}
void main()
{
int gd=DETECT,gm,x,y;
initgraph(&gd,&gm,"C:\\TC\\BGI");
x=getmaxx()/2;
y=getmaxy()/2;
setfillstyle(1,15);
bar3d(x-50,y-28,x+50,y-8,0,0);
bar3d(x-50,y-2,x+50,y+18,0,0);
bar3d(x-50,y+24,x+50,y+44,0,0);
settextstyle(11,0,7);
setcolor(0);
outtextxy(x-30,y-20,"keyboard");
outtextxy(x-20,y+6,"mouse");
outtextxy(x-15,y+32,"exit");
callmouse();
do{
mouseposi(xpos1,ypos1,click);
if(xpos1>x-50 && xpos1<x+50 && ypos1>y-28 && ypos1<y-8)
{
setfillstyle(1,15);
bar3d(x-50,y-28,x+50,y-8,0,0);
settextstyle(11,0,7);
setcolor(0);
outtextxy(x-30,y-20,"keyboard");
outtextxy(x-20,y+6,"mouse");
outtextxy(x-15,y+32,"exit");
}
else
{
setfillstyle(1,0);
bar3d(x-50,y-28,x+50,y-8,0,0);
settextstyle(11,0,7);
setcolor(15);
outtextxy(x-30,y-20,"keyboard");
outtextxy(x-20,y+6,"mouse");
outtextxy(x-15,y+32,"exit");
}
/*********************************************************
*********************************************************/
if(xpos1>x-50 && xpos1<x+50 && ypos1>y-2 && ypos1<y+18)
{
setfillstyle(1,15);
bar3d(x-50,y-2,x+50,y+18,0,0);
settextstyle(11,0,7);
setcolor(0);
outtextxy(x-30,y-20,"keyboard");
outtextxy(x-20,y+6,"mouse");
outtextxy(x-15,y+32,"exit");
}
else
{
setfillstyle(1,0);
bar3d(x-50,y-2,x+50,y+18,0,0);
settextstyle(11,0,7);
setcolor(15);
outtextxy(x-30,y-20,"keyboard");
outtextxy(x-20,y+6,"mouse");
outtextxy(x-15,y+32,"exit");
}
/**********************************************************
**********************************************************/
if(xpos1>x-50 && xpos1<x+50 && ypos1>y+24 && ypos1<y+44)
{
setfillstyle(1,15);
bar3d(x-50,y+24,x+50,y+44,0,0);
settextstyle(11,0,7);
setcolor(0);
outtextxy(x-30,y-20,"keyboard");
outtextxy(x-20,y+6,"mouse");
outtextxy(x-15,y+32,"exit");
}
else
{
setfillstyle(1,0);
bar3d(x-50,y+24,x+50,y+44,0,0);
settextstyle(11,0,7);
setcolor(15);
outtextxy(x-30,y-20,"keyboard");
outtextxy(x-20,y+6,"mouse");
outtextxy(x-15,y+32,"exit");
}
}while(click==0);
}