infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Tudose Bogdan din Decembrie 03, 2007, 15:15:18



Titlul: Butoane - grafica
Scris de: Tudose Bogdan din Decembrie 03, 2007, 15:15:18
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

Cod:
#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);
}

// editat --> foloseste [ code ] [/ code ] pentru a scrie cod pe forum


Titlul: Răspuns: Butoane - grafica
Scris de: Dan-Leonard Crestez din Decembrie 03, 2007, 15:27:25
Borland e mort. Lasa-l sa se odihneasca in pace.

Du-te si invata orice altceva, dar nu asta.


Titlul: Răspuns: Butoane - grafica
Scris de: Hulub Ionut-Adrian din Ianuarie 07, 2008, 22:38:59
cred ca trebuie sa folosesti o metoda numita threading.


Titlul: Răspuns: Butoane - grafica
Scris de: Burceanu Gabriel din Februarie 07, 2008, 13:35:07
E cam tarziu sa raspund ,dar eu cred ca trebuie sa folosesti o metoda numita double-buffering...

PS: lasa borland-ul , apuca-te de c++ cu opengl/directx , java , c#,python ... foloseste borland numai pentru probleme.


Titlul: Răspuns: Butoane - grafica
Scris de: Cristian Strat din Februarie 07, 2008, 20:22:39
Bine ca sunteti credinciosi...


Titlul: Răspuns: Butoane - grafica
Scris de: Vene Tian din Februarie 16, 2008, 20:43:41
eu personal recomand delphi pentru aplicaţii în windows...


Titlul: Răspuns: Butoane - grafica
Scris de: Tabara Mihai din Februarie 16, 2008, 22:36:35
sau C#  :wink: ( Visual Studio 2005 Express Edition (http://msdn2.microsoft.com/en-us/express/aa975050.aspx) )