Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Butoane - grafica  (Citit de 2593 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
tuse
Strain


Karma: -10
Deconectat Deconectat

Mesaje: 20



Vezi Profilul
« : 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
« Ultima modificare: Decembrie 04, 2007, 00:26:00 de către Valentin Stanciu » Memorat
fluffy
Echipa infoarena
De-al casei
*****

Karma: 71
Deconectat Deconectat

Mesaje: 146



Vezi Profilul
« Răspunde #1 : 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.
Memorat
lache92
Strain


Karma: -10
Deconectat Deconectat

Mesaje: 18



Vezi Profilul
« Răspunde #2 : Ianuarie 07, 2008, 22:38:59 »

cred ca trebuie sa folosesti o metoda numita threading.
Memorat
BloodRain
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #3 : 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.
Memorat
wickedman
Echipa infoarena
Nu mai tace
*****

Karma: 227
Deconectat Deconectat

Mesaje: 670



Vezi Profilul WWW
« Răspunde #4 : Februarie 07, 2008, 20:22:39 »

Bine ca sunteti credinciosi...
Memorat
Sycron
Client obisnuit
**

Karma: -141
Deconectat Deconectat

Mesaje: 66



Vezi Profilul
« Răspunde #5 : Februarie 16, 2008, 20:43:41 »

eu personal recomand delphi pentru aplicaţii în windows...
Memorat
Tabara
Nu mai tace
*****

Karma: 20
Deconectat Deconectat

Mesaje: 216



Vezi Profilul
« Răspunde #6 : Februarie 16, 2008, 22:36:35 »

sau C#  wink ( Visual Studio 2005 Express Edition )
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines