Intanto grazie, comunque per XBarboX:
Non ho idea di cosa sia un thread, mi pare di aver letto che permette di svolgere istruzioni in contemporanea???
Per Lorenzo:
Ecco il codice:
case WM_PAINT:
PAINTSTRUCT ps;
HDC hdcWindow;
hdcWindow = BeginPaint(hwnd, &ps);
//Questo serve a ridisegnare le varie assonometrie dello spazio 3d se si //preme una freccia direzonale.
if (rot%3==0)
DrawGriglia1(hdcWindow);
if (rot%3==1)
DrawGriglia2(hdcWindow);
if (rot%3==2)
DrawGriglia3(hdcWindow);
if (rpn!="")
funpress++;
/**************************************************************/
/*Il Programma disegna grafici 3D di funzioni .*/
hdcWindow = GetDC(hwnd);
for (k=-Mz;k<=Mz+(2*Mz/prec);k=k+2*Mz/prec)
{
percentuale=int((k+Mz)*100/(2*Mz));
SendMessage(pro, PBM_SETPOS, percentuale, 0);
for (j=-My;j<=My;j=j+2*My/prec)
{
for (i=-Mx;i<=Mx;i=i+2*Mx/prec)
{
result=SolveRPN(rpn,i,j,k);
result2=SolveRPN(rpn2,i,j,k);
if (fabs(result-result2)<Mx/100)
{
penna=CreatePen(PS_SOLID,3,RGB(fabs(k*255/Mz),255-fabs(k*255/Mz),fabs(k*255/Mz)));
SelectObject(hdcWindow,penna);
if (rot%3==0)
/*ADATTAMENTO ALL'ASSONOMETRIA*/
{
x=i/2;
y=j/1.4142135-k;
ballX=int(500-x*500/Mx);
ballY=int(500+y*500/My);
pp[1].x=ballX;
pp[1].y=ballY;
if ((pp[0].x>0)&&(pp[0].y>0)&&(dist(pp[1],pp[0])<350)&&(ckx==BST_CHECKED))
Polyline(hdcWindow,pp ,2);
pp[0].x=ballX;
pp[0].y=ballY;
if (ckx!=BST_CHECKED)
{
if (((i<0)||(j<0)||(k<0))||((i<0)&&(j<0)&&(k<0)))
{
SetPixel(hdcWindow,ballX,ballY,RGB(255,0,255));
SetPixel(hdcWindow,ballX+1,ballY,RGB(255,0,255));
SetPixel(hdcWindow,ballX-1,ballY,RGB(255,0,255));
SetPixel(hdcWindow,ballX,ballY+1,RGB(255,0,255));
SetPixel(hdcWindow,ballX,ballY-1,RGB(255,0,255));
}
if ((i>0)&&(j>0)&&(k>0))
{
SetPixel(hdcWindow,ballX,ballY,RGB(255,0,0));
SetPixel(hdcWindow,ballX+1,ballY,RGB(255,0,0));
SetPixel(hdcWindow,ballX-1,ballY,RGB(255,0,0));
SetPixel(hdcWindow,ballX,ballY+1,RGB(255,0,0));
SetPixel(hdcWindow,ballX,ballY-1,RGB(255,0,0));
}
}
}
if (rot%3==1)
{
x=(i-(j/1.73205))*1.73205/2;
y=(j*2/1.73205)+((i-(j/1.73205))/2)-k;
ballX=int(500-x*500/Mx);
ballY=int(500+y*500/My);
pp[1].x=ballX;
pp[1].y=ballY;
if ((pp[0].x>0)&&(pp[0].y>0)&&(dist(pp[1],pp[0])<350)&&(ckx==BST_CHECKED))
Polyline(hdcWindow,pp ,2);
pp[0].x=ballX;
pp[0].y=ballY;
if (ckx!=BST_CHECKED)
{
if (((i<0)||(j<0)||(k<0))||((i<0)&&(j<0)&&(k<0)))
{
SetPixel(hdcWindow,ballX,ballY,RGB(255,0,255));
SetPixel(hdcWindow,ballX+1,ballY,RGB(255,0,255));
SetPixel(hdcWindow,ballX-1,ballY,RGB(255,0,255));
SetPixel(hdcWindow,ballX,ballY+1,RGB(255,0,255));
SetPixel(hdcWindow,ballX,ballY-1,RGB(255,0,255));
}
if ((i>0)&&(j>0)&&(k>0))
{
SetPixel(hdcWindow,ballX,ballY,RGB(255,0,0));
SetPixel(hdcWindow,ballX+1,ballY,RGB(255,0,0));
SetPixel(hdcWindow,ballX-1,ballY,RGB(255,0,0));
SetPixel(hdcWindow,ballX,ballY+1,RGB(255,0,0));
SetPixel(hdcWindow,ballX,ballY-1,RGB(255,0,0));
}
}
}
if (rot%3==2)
{
x=(i-(j/2))/2;
y=(i-j/2)/(1.73205/2)+(2*j/1.73205)-k;
ballX=int(500-x*500/Mx);
ballY=int(500+y*500/My);
pp[1].x=ballX;
pp[1].y=ballY;
if ((pp[0].x>0)&&(pp[0].y>0)&&(dist(pp[1],pp[0])<350)&&(ckx==BST_CHECKED))
Polyline(hdcWindow,pp ,2);
pp[0].x=ballX;
pp[0].y=ballY;
if (ckx!=BST_CHECKED)
{
if (((i<0)||(j<0)||(k<0))||((i<0)&&(j<0)&&(k<0)))
{
SetPixel(hdcWindow,ballX,ballY,RGB(255,0,255));
SetPixel(hdcWindow,ballX+1,ballY,RGB(255,0,255));
SetPixel(hdcWindow,ballX-1,ballY,RGB(255,0,255));
SetPixel(hdcWindow,ballX,ballY+1,RGB(255,0,255));
SetPixel(hdcWindow,ballX,ballY-1,RGB(255,0,255));
}
if ((i>0)&&(j>0)&&(k>0))
{
SetPixel(hdcWindow,ballX,ballY,RGB(255,0,0));
SetPixel(hdcWindow,ballX+1,ballY,RGB(255,0,0));
SetPixel(hdcWindow,ballX-1,ballY,RGB(255,0,0));
SetPixel(hdcWindow,ballX,ballY+1,RGB(255,0,0));
SetPixel(hdcWindow,ballX,ballY-1,RGB(255,0,0));
}
}
}
}
}
}
}
pp[0].x=0;
pp[0].y=0;
funpress=0;
EndPaint(hwnd, &ps);
break;