//Offset maximal possible (barre de défilement)
#define OffsetMax (nBoutons*ESPACEMENT-HAUT_LISTE)
//Hauteur de la barre de défilement
#define HauteurBloc (HAUT_LISTE*HAUT_LISTE/(nBoutons*ESPACEMENT))

void DessineBarreDefil(int x, int y, int clic)			{
	static ECRAN *ecrTemp=NULL, ecrCour;
	static OBJET *objEcr;
	int x0, y0, x1, y1;
	static int clique=0, position=0, offs=0, selection=0, nSel=0;

	if (!ecrTemp)		{
		EcranCourant(&ecrCour);
		ecrTemp=CreeEcran(16,HAUT_LISTE);
		objEcr=EcranVersObjet(ecrTemp);
	}

	x0=1, y0=(HAUT_LISTE-HauteurBloc)*offset/(OffsetMax)+1, x1=14, y1=HauteurBloc-3;
	if (y1>=HAUT_LISTE-3)
		y1=HAUT_LISTE-3;

	//S'il clique et qu'il reste dans une gamme horizontale raisonnable. -> déplace la barre
	if (clique /*&& x>=0 && x<=16*/)
		offset=OffsetMax*(y-position)/(HAUT_LISTE-HauteurBloc)+offs;

	if (clic && x>=0 && x<=16 && y>=0 && y<=HAUT_LISTE)			{
autorepeat:
		if (y>=y0 && y<=y0+y1 && !selection)			{
			clique=1;
			position=y;
			offs=offset;
			selection=0;
		}
		else if (y<y0 && selection<=0)			{
			offset-=90;
			selection=-1;
			nSel=0;
		}
		else if (y>y0+y1 && selection>=0)			{
			offset+=90;
			selection=1;
			nSel=0;
		}
	}

	if (selection)			{
		nSel++;
		if (nSel>=30 && nSel%15==0)					//AutoRepeat
			goto autorepeat;
	}

	if (!testTouche(T_SOURIS_GAUCHE))				//Fin de sélection
		clique=selection=0;

	//Dessin
	if (!skip)			{
		//Dessin de la barre (buffer temp.)
		ChoisitEcran(ecrTemp);
		EffaceEcran();
		FxCadre(0,0,16,HAUT_LISTE,RGB(255,0,254));
		FxRect(x0,y0,x1,y1,NOIR);
		FxRect(x0,y0,x1-1,y1-1,RGB(128,128,128));
		FxRect(x0+1,y0+1,x1-3,y1-3,BLANC);
	/*	if (x>=0 && x<=16 && y>=y0 && y<=y0+y1)			{
			if (clique)
				FxCadre(x0+2,y0+2,x1-4,y1-4,RGB(192,224,255));
			else
				FxCadre(x0+2,y0+2,x1-4,y1-4,RGB(192,192,255));
		}
		else*/
			FxCadre(x0+2,y0+2,x1-4,y1-4,RGB(192,192,192));

		ChoisitEcran(&ecrCour);
		ZoneEcran(310,80,310+16,240);
		//Dessin sur l'écran
		if (x>=0 && x<=16 && y>=y0 && y<=y0+y1)
			FxObjet(objEcr,0,0,FX_TRANS,192);
		else
			FxObjet(objEcr,0,0,FX_TRANS,128);

		//Clic en haut de la barre
		if (selection<0)
			FxCadre(0,0,16,y0-1,JAUNE,FX_TRANS,128);
		else if (selection>0)				//Ou en bas
			FxCadre(0,y0+y1+1,16,HAUT_LISTE-(y0+y1)-2,JAUNE,FX_TRANS,128);

		//La bordure
		FxRect(0,0,16,HAUT_LISTE,VERT);
	}
}

