Oppure

Loading
07/08/12 6:28
Dany
Ciao, volevo chiedervi, se io ho una finestra, e volessi rendere tutti i pixel rossi (per esempio) neri, come potrei fare? C'è qualche macro o funzione?
So che esiste SetPixel ma io ho bisogno di una funzione che cambi colore di TUTTI i pixel della finestra.
Grazie in anticipo.:k:
aaa
07/08/12 7:52
Detta così non si può rispondere (bisognerebbe essere maghi)

Devi indicare l'ambiente in cui operi, le librerie grafiche che utilizzi, che tipo di progetto hai impostato, di quale finestra parli e come l'hai creata.
07/08/12 10:04
Dany
Hai ragione,
Windows 7 Professional 32bit
Come compilatore uso sia Dev C++ che MSVisual (L'eseguibile di dev è più veloce ma il debug di MSV non lo upera nessuno)
Sto utilizzando le Api di Windows.

In pratica data questa fnestra principale creata con CreateWindowEx() vorrei trovare un modo per rendere neri tutti i pixel rossi (o di un altro colore che scelgo).
Ho provato già a fare la verifica uno per uno con GetPixel e poi Set Pixel, ma impiega tropo tempo....Per intenderci vorrei usare una funzione come SetLayeredWindowAttributes solo che invece di rendere invisibili i pixel di un determinato colore, li rendesse neri. Capito?
aaa
11/08/12 9:46
Visual C++ è veloce quanto altri compilatori. Ovviamente dovrai compilare in modalità Release e non Debug per fare un confronto. In quale modalità compili?

In secondo luogo, se mostri il codice che hai usato è meglio ...
11/08/12 12:46
Dany
Compilo in Release perchè in debug mi dà un errore.
Comuque non è questo il punto. Ora posto il codice, ma vi avviso, per adesso è estremamente rudimeentale e scommentato.
/***************************************************
***********PAINT XY-Z-******************************
***********AUTORE:  DANY****************************
***********DATA:    17/07/12************************
***********ORE:    *****************************
***********VERSIONE:  1.1***************************/

//Dichiarazione Header
#define _WIN32_WINNT 0x0500 
#include <windows.h>
#include <Windowsx.h>
#include <commctrl.h>
#include <cmath>
#include <ctime>
#include <stack>  
#include <fstream>
#include <cstring>
//Dichiarazione librerie:
#include "funzioni.h"
//Dichiarazioni per visual style (grafica win 7)
#pragma comment( lib, "comctl32.lib")
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
//Fine Dichiarazioni...                                                                                            //prima della p--> \
//Namespace:
using namespace std;
//Dichiarazione variabili globali:
//Class Name delle finestre
static char g_szClassName[] = "Main",name2[]="System";
static HINSTANCE g_hInst = NULL;
//Timer per la WM_Timer nella mainWindows
const UINT idTimer1 = 1;
UINT nTimerDelay = 1;
//Bitmap
HBITMAP griglia,maskgri,griglia2,griglia3;
BITMAP bm;
//Coordinate Punto funzione
int ballX, ballY;
//Font dei Caratteri:
RECT rect;
HFONT hfont;
LOGFONT lf;
//Progress Bar in system windows
HWND pro;
//stringhe che in function window contiene le funzioni in notazione polacca inversa.
string rpn="",rpn2="";
//Variabile che indica se il pulsante disegna in function window è stato premuto.
int funpress=0;
//Point che contiene le posizioni dei punti che collegherà  la linea
POINT pp[2];
//Minimi e massimi delle equazioni dei sistemi
float Mx=0,My=0,Mz=0;
//Precisione
int prec=0;
//Se checkbox è checkata in filewindow
int ckx;
//Modulo per terminare processo
HMODULE wmphandle;
//Controlla se è il primo avvio:
fstream f,g;
string tex="";

//Dichiarazione della WndProc Della MainWindow
LRESULT CALLBACK WndProc(HWND hwnd ,UINT Message, WPARAM wParam, LPARAM lParam);
//Disegna la griglia di sfondo in assonometria monometrica metodo 2
void DrawGriglia1(HDC hdc)
{
     HDC hdcMemory=0;
     hdcMemory=CreateCompatibleDC(hdc);
     
	 SelectObject(hdcMemory, maskgri);
	 BitBlt(hdc, 0, 0, 1000, 1000, hdcMemory, 0, 0, SRCAND);
	 
	 SelectObject(hdcMemory, griglia);
     BitBlt(hdc, 0, 0, 1000, 1000, hdcMemory, 0, 0, SRCPAINT);
     
     DeleteDC(hdcMemory);
}
//Disegna la griglia di sfondo in assonometria cavaliera metodo 1
void DrawGriglia2(HDC hdc)
{
     HDC hdcMemory=0;
     hdcMemory=CreateCompatibleDC(hdc);
     
	 SelectObject(hdcMemory, maskgri);
	 BitBlt(hdc, 0, 0, 1000, 1000, hdcMemory, 0, 0, SRCAND);
	 
	 SelectObject(hdcMemory, griglia2);
     BitBlt(hdc, 0, 0, 1000, 1000, hdcMemory, 0, 0, SRCPAINT);
     
     DeleteDC(hdcMemory);
}
//Disegna la griglia di sfondo in assonometria monometrica metodo 1
void DrawGriglia3(HDC hdc)
{
     HDC hdcMemory=0;
     hdcMemory=CreateCompatibleDC(hdc);
     
	 SelectObject(hdcMemory, maskgri);
	 BitBlt(hdc, 0, 0, 1000, 1000, hdcMemory, 0, 0, SRCAND);
	 
	 SelectObject(hdcMemory, griglia3);
     BitBlt(hdc, 0, 0, 1000, 1000, hdcMemory, 0, 0, SRCPAINT);
     
     DeleteDC(hdcMemory);
}
/*************************************************************************************************************/
//Dichiarazione variabili in WndProc
//Variabili disegno funzione
double x,y,z;
double i,j,k;
//Variabili Menu:
HMENU file,hfile,info,hinfo,modifica,hmodifica,ruota,dire,visu,hvisu;
int MENU_FILE_EXIT=0;  //Valore ritorno se si clicca su "Esci"
int MENU_FILE_CURV=1;  //Valore ritorno se si clicca su "Disegna Equazione"
int MENU_FILE_ABOU=3;  //Valore ritorno se si clicca su "Informazioni su "Paint XY"
int MENU_FILE_DEST=8;  //Valore ritorno se si clicca su "Ruota a destra"
int MENU_FILE_SINI=7;  //Valore ritorno se si clicca su "Ruota a sinistra"
int MENU_FILE_HELP=4;  //Valore ritorno se si clicca su "HELP"
int MENU_FILE_POSI=9;  //Valore ritorno se si clicca su "Positivo"
int MENU_FILE_TUTT=10;  //Valore ritorno se si clicca su "Tutto"
int MENU_FILE_CLEA=6;  //Valore ritorno se si clicca su "Pulisci"

/*result:*/
float result,result2;
//Sfondo
int rot=300;
//Visualizzazione grafico
HWND all,pos;
//HDC di -> hwnd
HDC hdcWindow=NULL;
//Penna
HPEN penna;



/*WNDPROC DELLA MAIN*/
LRESULT CALLBACK WndProc(HWND hwnd ,UINT Message, WPARAM wParam, LPARAM lParam)
{  
	InitCommonControls ();   //Applicazione visual style
	
   switch(Message)
   { 
      case WM_CREATE:
          f.open("Avvio.txt",ios::in);
          f>>tex;
          if (tex=="")
          {
             system("start Guida.txt");
          }
          f.close();
          g.open("Avvio.txt",ios::out|ios::app);
          if (tex=="")
          {
             g<<"a";
          }
          g.close();
          SetLayeredWindowAttributes(hwnd, RGB(0, 0, 255), 255, LWA_COLORKEY | LWA_ALPHA);
		  //Nella finestra principale:
		  //Inizializzazione delle immagini BMP
          griglia = LoadBitmap(g_hInst, "gri");
          griglia2 = LoadBitmap(g_hInst, "gri2");
          griglia3 = LoadBitmap(g_hInst, "gri3");
		  maskgri = LoadBitmap(g_hInst, "maskgri");
		  //Timer:
          SetTimer(hwnd, idTimer1, nTimerDelay, NULL);
		  //Menu:
		  //Dichiarazione Menu:
		  file=CreateMenu();
		  hfile=CreatePopupMenu();
		  hinfo=CreatePopupMenu();
		  hmodifica=CreatePopupMenu();
		  dire=CreatePopupMenu();
		  hvisu=CreatePopupMenu();
		  //Creazione Menu:
		  /*File*/ 
          AppendMenu(file,MF_STRING|MF_POPUP,(UINT_PTR) hfile,TEXT("File"));
          AppendMenu(hfile,MF_STRING,MENU_FILE_EXIT,TEXT("Esci"));
		  /*Modifica*/
		  AppendMenu(file,MF_STRING|MF_POPUP,(UINT_PTR) hmodifica,TEXT("Disegna"));
          AppendMenu(hmodifica,MF_STRING,MENU_FILE_CURV,TEXT("Equazione"));
		  AppendMenu(hmodifica,MF_STRING,MENU_FILE_CLEA,TEXT("Pulisci      CANC"));
		  /*Ruota*/
		  AppendMenu(file,MF_STRING|MF_POPUP,(UINT_PTR) dire,TEXT("Ruota"));
		  AppendMenu(dire,MF_STRING,MENU_FILE_DEST,TEXT("A Destra          Freccia destra"));
		  AppendMenu(dire,MF_STRING,MENU_FILE_SINI,TEXT("A Sinistra          Freccia sinistra"));
		  /*Visibilità*/
		  AppendMenu(file,MF_STRING|MF_POPUP,(UINT_PTR) hvisu,TEXT("Rendi visibile..."));
		  AppendMenu(hvisu,MF_STRING,MENU_FILE_POSI,TEXT("Spazio Positivo"));
		  AppendMenu(hvisu,MF_STRING,MENU_FILE_TUTT,TEXT("Spazio Complessivo"));
		  /*Info*/
		  AppendMenu(file,MF_STRING|MF_POPUP,(UINT_PTR) hinfo,TEXT("Info"));
		  AppendMenu(hinfo,MF_STRING,MENU_FILE_ABOU,TEXT("Informazioni su Paint XY"));
		  AppendMenu(hinfo,MF_STRING,MENU_FILE_HELP,TEXT("Help"));
		  //Rende visibile i menu
		  SetMenu(hwnd,file);  
          /*BARRA*/
	      pro=CreateWindowEx(NULL, PROGRESS_CLASS, NULL, WS_CHILD|WS_VISIBLE,5,2, 200, 25, hwnd, NULL, NULL, 0);
          /*Visualizzazione del grafico*/
          break;
      case WM_TIMER:
		  if (funpress>0)
		  {
              hdcWindow = GetDC(hwnd);
			  
			  for (k=-Mz;k<=Mz;k=k+2*Mz/prec)
			  {
                  SendMessage(pro, PBM_SETPOS, WPARAM(int((k+Mz)*100/(2*Mz)+1)), 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),fabs(k*255/Mz),255-fabs(k*255/Mz)));
			                   SelectObject(hdcWindow,penna);
                               if (rot%3==0)
                               {
                                  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;
		  }
          break;
      case WM_COMMAND: /***************************************MENU*****************************************************/
		   if (LOWORD(wParam)==MENU_FILE_EXIT)
		   {
			   DestroyWindow(hwnd);    //Chiudo la finestra
		   }
		   if (LOWORD(wParam)==MENU_FILE_ABOU)
		   {
			   MessageBox(hwnd,"Paint XY -Z- Versione 1.1","By Dany",MB_OK|MB_ICONINFORMATION);
		   }
		   if (LOWORD(wParam)==MENU_FILE_CLEA)
		   {
               
     		   ShowWindow(hwnd,0);
			   ShowWindow(hwnd,1);
			   Mx=0;My=0,Mz=0;
			   rpn="";
			   rpn2="";
			   funpress=0;
		   }
		   if (LOWORD(wParam)==MENU_FILE_CURV)
		   {
			   //Crea e visualizza la finestra
			   MSG messages5;
               HWND hwnd5 = CreateWindowEx (0,name2,"Equazione:",WS_SYSMENU|WS_MINIMIZEBOX|WS_VISIBLE,400,400,400,320,hwnd, NULL, g_hInst,NULL);
			   ShowWindow (hwnd5, 1);
			   while (GetMessage (&messages5, NULL, 0, 0))
			   {
                       TranslateMessage(&messages5);
                       DispatchMessage(&messages5);
			   }
		   }
		   if (LOWORD(wParam)==MENU_FILE_HELP)
		   {
               system("Guida.txt");
           }
           if (LOWORD(wParam)==7)
		   {
               if (rpn!="")
               funpress++;
               rot--;
               ShowWindow(hwnd,0);
               ShowWindow(hwnd,1);
           }
           if (LOWORD(wParam)==8)
		   {
               if (rpn!="")
               funpress++;
               rot++;
               ShowWindow(hwnd,0);
               ShowWindow(hwnd,1);
           }
           if (LOWORD(wParam)==9)
		   {  
               SetLayeredWindowAttributes(hwnd, RGB(255, 0, 255), 255, LWA_COLORKEY | LWA_ALPHA);
           }
           if (LOWORD(wParam)==10)
		   {
               SetLayeredWindowAttributes(hwnd, RGB(0, 0, 255), 255, LWA_COLORKEY | LWA_ALPHA);
           }
           break;
      case WM_PAINT:
            PAINTSTRUCT ps;
            HDC hdcWindow;
            hdcWindow = BeginPaint(hwnd, &ps); 
            
            if (rot%3==0)
               DrawGriglia1(hdcWindow);
               
            if (rot%3==1)
               DrawGriglia2(hdcWindow);
               
            if (rot%3==2)
               DrawGriglia3(hdcWindow);
            if (rpn!="")   
			funpress++;
			
            EndPaint(hwnd, &ps);
		 break;
		case WM_KEYDOWN:
			 if (LOWORD(wParam)==VK_DELETE)   //Pulizia istantanea se si preme  CANC
			 {
			   ShowWindow(hwnd,0);
			   ShowWindow(hwnd,1);
			   Mx=0;My=0,Mz=0;
			   rpn="";
			   rpn2="";
			   funpress=0;
			 }
			 if (LOWORD(wParam)==VK_LEFT)
			 {
                   if (rpn!="")
               funpress++;
               rot--;
               ShowWindow(hwnd,0);
               ShowWindow(hwnd,1);
             }
             if (LOWORD(wParam)==VK_RIGHT)
			 {
                     if (rpn!="")
               funpress++;
               rot++;
               ShowWindow(hwnd,0);
               ShowWindow(hwnd,1);                    
             }
			 break;
      case WM_CLOSE:
		  if(MessageBox(hwnd,"Vuoi davvero uscire?","Messaggio",MB_YESNO|MB_ICONQUESTION)==IDYES)
         DestroyWindow(hwnd);
         break;
      case WM_DESTROY:
           wmphandle = GetModuleHandle("PaintXY.exe");
           DWORD       dwExitCode;
           GetExitCodeProcess(wmphandle,  &dwExitCode );
           ExitProcess( dwExitCode);
         KillTimer(hwnd, idTimer1); 
         PostQuitMessage(0);
         break;
      default:
         return DefWindowProc(hwnd, Message, wParam, lParam);
   }
   return 0;
}
//Function Window
//HWND
HWND edit,edit2,button,sbox;
HWND maxx,maxy,maxz,acc;
//Window Procedure della System Window
LRESULT CALLBACK WindowProcedure3 (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{	
	InitCommonControls ();     //Applicazione visual style
	switch(message)
	{
		case WM_CREATE:
            
			/*CHECKBOX*/
			sbox=CreateWindow("Button","Collega con linee",WS_VISIBLE|WS_CHILD|BS_AUTOCHECKBOX,170,132,150,25,hwnd,NULL,NULL,NULL);
			
			/*EDIT*/
		    edit=CreateWindow("edit","<primo membro>",WS_VISIBLE|WS_CHILD|WS_BORDER|EM_GETLINE,10,40,150,20,hwnd,0,0,0);
			edit2=CreateWindow("edit","<secondo membro>",WS_VISIBLE|WS_CHILD|WS_BORDER|EM_GETLINE,174,40,150,20,hwnd,0,0,0);
			/*BUTTON*/
			button=CreateWindow("Button","CALCOLA!",WS_VISIBLE|WS_CHILD,4,220,385,50,hwnd,(HMENU)2,NULL,NULL);
			/*MIN E MAX X E Y E PRECISIONE*/
			maxx=CreateWindow("edit","10",WS_VISIBLE|WS_CHILD|WS_BORDER,80,80,60,20,hwnd,NULL,NULL,NULL);
			maxy=CreateWindow("edit","10",WS_VISIBLE|WS_CHILD|WS_BORDER,80,115,60,20,hwnd,NULL,NULL,NULL);
			maxz=CreateWindow("edit","10",WS_VISIBLE|WS_CHILD|WS_BORDER,80,150,60,20,hwnd,NULL,NULL,NULL);
			acc=CreateWindow("edit","70",WS_VISIBLE|WS_CHILD|WS_BORDER,250,92,50,20,hwnd,NULL,NULL,NULL);
			/****SETTO I CARATTERI DA UTILIZZARE: FONT, DIMENSIONI ECC...**/
			GetObject (GetStockObject(DEFAULT_GUI_FONT), sizeof(LOGFONT), &lf); 
			hfont = CreateFont (20,0,0,0, 500, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_OUTLINE_PRECIS,
            CLIP_DEFAULT_PRECIS, 5, VARIABLE_PITCH, TEXT ("Monotype Corsiva"));
			SendMessage (edit, WM_SETFONT, (WPARAM) hfont, true); 
			SendMessage (edit2, WM_SETFONT, (WPARAM) hfont, true); 
			SendMessage (button, WM_SETFONT, (WPARAM) hfont, true);
			SendMessage (maxx, WM_SETFONT, (WPARAM) hfont, true);
			SendMessage (maxy, WM_SETFONT, (WPARAM) hfont, true);
			SendMessage (maxz, WM_SETFONT, (WPARAM) hfont, true);
			SendMessage (acc, WM_SETFONT, (WPARAM) hfont, true);
			SendMessage (sbox, WM_SETFONT, (WPARAM) hfont, true);
	    	break;
		case WM_PAINT:
			PAINTSTRUCT ps;
			HDC hdcWindow; 
			hdcWindow = BeginPaint(hwnd, &ps);
			/****SETTO I CARATTERI DA UTILIZZARE: FONT, DIMENSIONI ECC...**/
			hfont = CreateFont (20,0,0,0, 500, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_OUTLINE_PRECIS,
            CLIP_DEFAULT_PRECIS, 5, VARIABLE_PITCH, TEXT ("Monotype Corsiva"));
			SelectObject (hdcWindow, hfont);
			SetRect (& rect, 100,100,700,200); 
            SetTextColor (hdcWindow, RGB (0,0,0));
			TextOut(hdcWindow,1,1,"Comporre l'equazione desiderata.",32);
			TextOut(hdcWindow,161,40,"=",1);
			TextOut(hdcWindow,10,80,"max x =",7);
			TextOut(hdcWindow,10,115,"max y =",7);
			TextOut(hdcWindow,10,150,"max z =",7);
			TextOut(hdcWindow,175,92,"precisione",10);
			EndPaint(hwnd,&ps);
			break;
		case WM_COMMAND:
			if (LOWORD(wParam)==2)
			{
				funpress++;                //Indica che è stato premuto il tasto CALCOLA!
				//Inizializzo gli array che contengono le espressioni
				char in[100]="",in2[100]="";
				//Prendo il testo negli edit e lo metto negli array
				GetWindowText(edit,in,100);
				GetWindowText(edit2,in2,100);
				//Mi trovo la notazione polacca inversa (RPN)
				rpn=FoundRPN(in);
				rpn2=FoundRPN(in2);
				//leggo i massimi e i minimi e la precisione:
                //ne inizializzo gli array
				char maxix[6]="",maxiz[6]="",maxiy[6]="",accu[5]="";
				//Li catturo dagli edit
				GetWindowText(acc,accu,5);
				GetWindowText(maxx,maxix,6);
				GetWindowText(maxy,maxiy,6);
				GetWindowText(maxz,maxiz,6);
				//Converto le string in float.
				Mx=atof(maxix);
				My=atof(maxiy);
				Mz=atof(maxiz);
				prec=atoi(accu);
				//Controllo lo stato della checkbox
				ckx=SendMessage(sbox, BM_GETCHECK, 0,0);
			}
			break;
		case WM_DESTROY:
				PostQuitMessage(0);
				break;
		default:
			return DefWindowProc(hwnd,message,wParam,lParam);
	}
	return 0;
}

//Creazione finestra principale/Dichiarazione di hinstance per le altre finestre.
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
   InitCommonControls ();      //Applicazione visual style
   WNDCLASSEX WndClass,WndClass3;
   HWND hwnd;
   MSG Msg;
   
   g_hInst = hInstance;
   //Main Window
   WndClass.cbSize        = sizeof(WNDCLASSEX);
   WndClass.style         = 0;
   WndClass.lpfnWndProc   = WndProc;
   WndClass.cbClsExtra    = 0;
   WndClass.cbWndExtra    = 0;
   WndClass.hInstance     = g_hInst;
   WndClass.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
   WndClass.hCursor       = LoadCursor(NULL, IDC_ARROW);
   WndClass.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1);
   WndClass.lpszMenuName  = NULL;
   WndClass.lpszClassName = g_szClassName;
   WndClass.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);
   //SystemWindow
   WndClass3.cbSize        = sizeof(WNDCLASSEX);
   WndClass3.style         = 0;
   WndClass3.lpfnWndProc   = WindowProcedure3;
   WndClass3.cbClsExtra    = 0;
   WndClass3.cbWndExtra    = 0;
   WndClass3.hInstance     = hInstance;
   WndClass3.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
   WndClass3.hCursor       = LoadCursor(NULL, IDC_ARROW);
   WndClass3.hbrBackground = (HBRUSH)(15);
   WndClass3.lpszMenuName  = NULL;
   WndClass3.lpszClassName = name2;
   WndClass3.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);

   //Main Window
   if(!RegisterClassEx(&WndClass))
   {
      MessageBox(0, "Window1 Registration Failed!", "Error!",
         MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL);
      return 0;
   }
   //System Window
    if(!RegisterClassEx(&WndClass3))
   {
      MessageBox(0, "Window3 Registration Failed!", "Error!",
         MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL);
      return 0;
   }
   //CREAZIONE:
   //Main Window
   hwnd = CreateWindowEx(
   WS_EX_CLIENTEDGE|WS_EX_LAYERED,
   g_szClassName,
   "Paint XY-Z-",
   WS_SYSMENU|WS_MINIMIZEBOX|WS_VISIBLE,
   175, 0, 1009, 1000,
   NULL, NULL, g_hInst, NULL);
     
    //incaso di errore
   if (hwnd == NULL)
   {
      MessageBox(0, "Window Creation Failed!", "Error!",
         MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL);
      return 0;
   }
   //Visualizza Main Window
   ShowWindow(hwnd, nCmdShow);
   UpdateWindow(hwnd);
   //Messaggio da Main Window
   while(GetMessage(&Msg, NULL, 0, 0))
   {
      TranslateMessage(&Msg);
      DispatchMessage(&Msg);
   }
   return Msg.wParam;
}






Inoltre vi è anche un file contenenti le funzioni ma sono riferite alla conversione in RPN, perciò quì non hano importanza.
aaa
11/08/12 12:53
Dany
Compilo in Release perchè in debug mi dà un errore.
Comuque non è questo il punto. Ora posto il codice, ma vi avviso, per adesso è estremamente rudimeentale e scommentato.
/***************************************************
***********PAINT XY-Z-******************************
***********AUTORE:  DANY****************************
***********DATA:    17/07/12************************
***********ORE:    *****************************
***********VERSIONE:  1.1***************************/

//Dichiarazione Header
#define _WIN32_WINNT 0x0500 
#include <windows.h>
#include <Windowsx.h>
#include <commctrl.h>
#include <cmath>
#include <ctime>
#include <stack>  
#include <fstream>
#include <cstring>
//Dichiarazione librerie:
#include "funzioni.h"
//Dichiarazioni per visual style (grafica win 7)
#pragma comment( lib, "comctl32.lib")
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
//Fine Dichiarazioni...                                                                                            //prima della p--> \
//Namespace:
using namespace std;
//Dichiarazione variabili globali:
//Class Name delle finestre
static char g_szClassName[] = "Main",name2[]="System";
static HINSTANCE g_hInst = NULL;
//Timer per la WM_Timer nella mainWindows
const UINT idTimer1 = 1;
UINT nTimerDelay = 1;
//Bitmap
HBITMAP griglia,maskgri,griglia2,griglia3;
BITMAP bm;
//Coordinate Punto funzione
int ballX, ballY;
//Font dei Caratteri:
RECT rect;
HFONT hfont;
LOGFONT lf;
//Progress Bar in system windows
HWND pro;
//stringhe che in function window contiene le funzioni in notazione polacca inversa.
string rpn="",rpn2="";
//Variabile che indica se il pulsante disegna in function window è stato premuto.
int funpress=0;
//Point che contiene le posizioni dei punti che collegherà  la linea
POINT pp[2];
//Minimi e massimi delle equazioni dei sistemi
float Mx=0,My=0,Mz=0;
//Precisione
int prec=0;
//Se checkbox è checkata in filewindow
int ckx;
//Modulo per terminare processo
HMODULE wmphandle;
//Controlla se è il primo avvio:
fstream f,g;
string tex="";

//Dichiarazione della WndProc Della MainWindow
LRESULT CALLBACK WndProc(HWND hwnd ,UINT Message, WPARAM wParam, LPARAM lParam);
//Disegna la griglia di sfondo in assonometria monometrica metodo 2
void DrawGriglia1(HDC hdc)
{
     HDC hdcMemory=0;
     hdcMemory=CreateCompatibleDC(hdc);
     
	 SelectObject(hdcMemory, maskgri);
	 BitBlt(hdc, 0, 0, 1000, 1000, hdcMemory, 0, 0, SRCAND);
	 
	 SelectObject(hdcMemory, griglia);
     BitBlt(hdc, 0, 0, 1000, 1000, hdcMemory, 0, 0, SRCPAINT);
     
     DeleteDC(hdcMemory);
}
//Disegna la griglia di sfondo in assonometria cavaliera metodo 1
void DrawGriglia2(HDC hdc)
{
     HDC hdcMemory=0;
     hdcMemory=CreateCompatibleDC(hdc);
     
	 SelectObject(hdcMemory, maskgri);
	 BitBlt(hdc, 0, 0, 1000, 1000, hdcMemory, 0, 0, SRCAND);
	 
	 SelectObject(hdcMemory, griglia2);
     BitBlt(hdc, 0, 0, 1000, 1000, hdcMemory, 0, 0, SRCPAINT);
     
     DeleteDC(hdcMemory);
}
//Disegna la griglia di sfondo in assonometria monometrica metodo 1
void DrawGriglia3(HDC hdc)
{
     HDC hdcMemory=0;
     hdcMemory=CreateCompatibleDC(hdc);
     
	 SelectObject(hdcMemory, maskgri);
	 BitBlt(hdc, 0, 0, 1000, 1000, hdcMemory, 0, 0, SRCAND);
	 
	 SelectObject(hdcMemory, griglia3);
     BitBlt(hdc, 0, 0, 1000, 1000, hdcMemory, 0, 0, SRCPAINT);
     
     DeleteDC(hdcMemory);
}
/*************************************************************************************************************/
//Dichiarazione variabili in WndProc
//Variabili disegno funzione
double x,y,z;
double i,j,k;
//Variabili Menu:
HMENU file,hfile,info,hinfo,modifica,hmodifica,ruota,dire,visu,hvisu;
int MENU_FILE_EXIT=0;  //Valore ritorno se si clicca su "Esci"
int MENU_FILE_CURV=1;  //Valore ritorno se si clicca su "Disegna Equazione"
int MENU_FILE_ABOU=3;  //Valore ritorno se si clicca su "Informazioni su "Paint XY"
int MENU_FILE_DEST=8;  //Valore ritorno se si clicca su "Ruota a destra"
int MENU_FILE_SINI=7;  //Valore ritorno se si clicca su "Ruota a sinistra"
int MENU_FILE_HELP=4;  //Valore ritorno se si clicca su "HELP"
int MENU_FILE_POSI=9;  //Valore ritorno se si clicca su "Positivo"
int MENU_FILE_TUTT=10;  //Valore ritorno se si clicca su "Tutto"
int MENU_FILE_CLEA=6;  //Valore ritorno se si clicca su "Pulisci"

/*result:*/
float result,result2;
//Sfondo
int rot=300;
//Visualizzazione grafico
HWND all,pos;
//HDC di -> hwnd
HDC hdcWindow=NULL;
//Penna
HPEN penna;



/*WNDPROC DELLA MAIN*/
LRESULT CALLBACK WndProc(HWND hwnd ,UINT Message, WPARAM wParam, LPARAM lParam)
{  
	InitCommonControls ();   //Applicazione visual style
	
   switch(Message)
   { 
      case WM_CREATE:
          f.open("Avvio.txt",ios::in);
          f>>tex;
          if (tex=="")
          {
             system("start Guida.txt");
          }
          f.close();
          g.open("Avvio.txt",ios::out|ios::app);
          if (tex=="")
          {
             g<<"a";
          }
          g.close();
          SetLayeredWindowAttributes(hwnd, RGB(0, 0, 255), 255, LWA_COLORKEY | LWA_ALPHA);
		  //Nella finestra principale:
		  //Inizializzazione delle immagini BMP
          griglia = LoadBitmap(g_hInst, "gri");
          griglia2 = LoadBitmap(g_hInst, "gri2");
          griglia3 = LoadBitmap(g_hInst, "gri3");
		  maskgri = LoadBitmap(g_hInst, "maskgri");
		  //Timer:
          SetTimer(hwnd, idTimer1, nTimerDelay, NULL);
		  //Menu:
		  //Dichiarazione Menu:
		  file=CreateMenu();
		  hfile=CreatePopupMenu();
		  hinfo=CreatePopupMenu();
		  hmodifica=CreatePopupMenu();
		  dire=CreatePopupMenu();
		  hvisu=CreatePopupMenu();
		  //Creazione Menu:
		  /*File*/ 
          AppendMenu(file,MF_STRING|MF_POPUP,(UINT_PTR) hfile,TEXT("File"));
          AppendMenu(hfile,MF_STRING,MENU_FILE_EXIT,TEXT("Esci"));
		  /*Modifica*/
		  AppendMenu(file,MF_STRING|MF_POPUP,(UINT_PTR) hmodifica,TEXT("Disegna"));
          AppendMenu(hmodifica,MF_STRING,MENU_FILE_CURV,TEXT("Equazione"));
		  AppendMenu(hmodifica,MF_STRING,MENU_FILE_CLEA,TEXT("Pulisci      CANC"));
		  /*Ruota*/
		  AppendMenu(file,MF_STRING|MF_POPUP,(UINT_PTR) dire,TEXT("Ruota"));
		  AppendMenu(dire,MF_STRING,MENU_FILE_DEST,TEXT("A Destra          Freccia destra"));
		  AppendMenu(dire,MF_STRING,MENU_FILE_SINI,TEXT("A Sinistra          Freccia sinistra"));
		  /*Visibilità*/
		  AppendMenu(file,MF_STRING|MF_POPUP,(UINT_PTR) hvisu,TEXT("Rendi visibile..."));
		  AppendMenu(hvisu,MF_STRING,MENU_FILE_POSI,TEXT("Spazio Positivo"));
		  AppendMenu(hvisu,MF_STRING,MENU_FILE_TUTT,TEXT("Spazio Complessivo"));
		  /*Info*/
		  AppendMenu(file,MF_STRING|MF_POPUP,(UINT_PTR) hinfo,TEXT("Info"));
		  AppendMenu(hinfo,MF_STRING,MENU_FILE_ABOU,TEXT("Informazioni su Paint XY"));
		  AppendMenu(hinfo,MF_STRING,MENU_FILE_HELP,TEXT("Help"));
		  //Rende visibile i menu
		  SetMenu(hwnd,file);  
          /*BARRA*/
	      pro=CreateWindowEx(NULL, PROGRESS_CLASS, NULL, WS_CHILD|WS_VISIBLE,5,2, 200, 25, hwnd, NULL, NULL, 0);
          /*Visualizzazione del grafico*/
          break;
      case WM_TIMER:
		  if (funpress>0)
		  {
              hdcWindow = GetDC(hwnd);
			  
			  for (k=-Mz;k<=Mz;k=k+2*Mz/prec)
			  {
                  SendMessage(pro, PBM_SETPOS, WPARAM(int((k+Mz)*100/(2*Mz)+1)), 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),fabs(k*255/Mz),255-fabs(k*255/Mz)));
			                   SelectObject(hdcWindow,penna);
                               if (rot%3==0)
                               {
                                  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;
		  }
          break;
      case WM_COMMAND: /***************************************MENU*****************************************************/
		   if (LOWORD(wParam)==MENU_FILE_EXIT)
		   {
			   DestroyWindow(hwnd);    //Chiudo la finestra
		   }
		   if (LOWORD(wParam)==MENU_FILE_ABOU)
		   {
			   MessageBox(hwnd,"Paint XY -Z- Versione 1.1","By Dany",MB_OK|MB_ICONINFORMATION);
		   }
		   if (LOWORD(wParam)==MENU_FILE_CLEA)
		   {
               
     		   ShowWindow(hwnd,0);
			   ShowWindow(hwnd,1);
			   Mx=0;My=0,Mz=0;
			   rpn="";
			   rpn2="";
			   funpress=0;
		   }
		   if (LOWORD(wParam)==MENU_FILE_CURV)
		   {
			   //Crea e visualizza la finestra
			   MSG messages5;
               HWND hwnd5 = CreateWindowEx (0,name2,"Equazione:",WS_SYSMENU|WS_MINIMIZEBOX|WS_VISIBLE,400,400,400,320,hwnd, NULL, g_hInst,NULL);
			   ShowWindow (hwnd5, 1);
			   while (GetMessage (&messages5, NULL, 0, 0))
			   {
                       TranslateMessage(&messages5);
                       DispatchMessage(&messages5);
			   }
		   }
		   if (LOWORD(wParam)==MENU_FILE_HELP)
		   {
               system("Guida.txt");
           }
           if (LOWORD(wParam)==7)
		   {
               if (rpn!="")
               funpress++;
               rot--;
               ShowWindow(hwnd,0);
               ShowWindow(hwnd,1);
           }
           if (LOWORD(wParam)==8)
		   {
               if (rpn!="")
               funpress++;
               rot++;
               ShowWindow(hwnd,0);
               ShowWindow(hwnd,1);
           }
           if (LOWORD(wParam)==9)
		   {  
               SetLayeredWindowAttributes(hwnd, RGB(255, 0, 255), 255, LWA_COLORKEY | LWA_ALPHA);
           }
           if (LOWORD(wParam)==10)
		   {
               SetLayeredWindowAttributes(hwnd, RGB(0, 0, 255), 255, LWA_COLORKEY | LWA_ALPHA);
           }
           break;
      case WM_PAINT:
            PAINTSTRUCT ps;
            HDC hdcWindow;
            hdcWindow = BeginPaint(hwnd, &ps); 
            
            if (rot%3==0)
               DrawGriglia1(hdcWindow);
               
            if (rot%3==1)
               DrawGriglia2(hdcWindow);
               
            if (rot%3==2)
               DrawGriglia3(hdcWindow);
            if (rpn!="")   
			funpress++;
			
            EndPaint(hwnd, &ps);
		 break;
		case WM_KEYDOWN:
			 if (LOWORD(wParam)==VK_DELETE)   //Pulizia istantanea se si preme  CANC
			 {
			   ShowWindow(hwnd,0);
			   ShowWindow(hwnd,1);
			   Mx=0;My=0,Mz=0;
			   rpn="";
			   rpn2="";
			   funpress=0;
			 }
			 if (LOWORD(wParam)==VK_LEFT)
			 {
                   if (rpn!="")
               funpress++;
               rot--;
               ShowWindow(hwnd,0);
               ShowWindow(hwnd,1);
             }
             if (LOWORD(wParam)==VK_RIGHT)
			 {
                     if (rpn!="")
               funpress++;
               rot++;
               ShowWindow(hwnd,0);
               ShowWindow(hwnd,1);                    
             }
			 break;
      case WM_CLOSE:
		  if(MessageBox(hwnd,"Vuoi davvero uscire?","Messaggio",MB_YESNO|MB_ICONQUESTION)==IDYES)
         DestroyWindow(hwnd);
         break;
      case WM_DESTROY:
           wmphandle = GetModuleHandle("PaintXY.exe");
           DWORD       dwExitCode;
           GetExitCodeProcess(wmphandle,  &dwExitCode );
           ExitProcess( dwExitCode);
         KillTimer(hwnd, idTimer1); 
         PostQuitMessage(0);
         break;
      default:
         return DefWindowProc(hwnd, Message, wParam, lParam);
   }
   return 0;
}
//Function Window
//HWND
HWND edit,edit2,button,sbox;
HWND maxx,maxy,maxz,acc;
//Window Procedure della System Window
LRESULT CALLBACK WindowProcedure3 (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{	
	InitCommonControls ();     //Applicazione visual style
	switch(message)
	{
		case WM_CREATE:
            
			/*CHECKBOX*/
			sbox=CreateWindow("Button","Collega con linee",WS_VISIBLE|WS_CHILD|BS_AUTOCHECKBOX,170,132,150,25,hwnd,NULL,NULL,NULL);
			
			/*EDIT*/
		    edit=CreateWindow("edit","<primo membro>",WS_VISIBLE|WS_CHILD|WS_BORDER|EM_GETLINE,10,40,150,20,hwnd,0,0,0);
			edit2=CreateWindow("edit","<secondo membro>",WS_VISIBLE|WS_CHILD|WS_BORDER|EM_GETLINE,174,40,150,20,hwnd,0,0,0);
			/*BUTTON*/
			button=CreateWindow("Button","CALCOLA!",WS_VISIBLE|WS_CHILD,4,220,385,50,hwnd,(HMENU)2,NULL,NULL);
			/*MIN E MAX X E Y E PRECISIONE*/
			maxx=CreateWindow("edit","10",WS_VISIBLE|WS_CHILD|WS_BORDER,80,80,60,20,hwnd,NULL,NULL,NULL);
			maxy=CreateWindow("edit","10",WS_VISIBLE|WS_CHILD|WS_BORDER,80,115,60,20,hwnd,NULL,NULL,NULL);
			maxz=CreateWindow("edit","10",WS_VISIBLE|WS_CHILD|WS_BORDER,80,150,60,20,hwnd,NULL,NULL,NULL);
			acc=CreateWindow("edit","70",WS_VISIBLE|WS_CHILD|WS_BORDER,250,92,50,20,hwnd,NULL,NULL,NULL);
			/****SETTO I CARATTERI DA UTILIZZARE: FONT, DIMENSIONI ECC...**/
			GetObject (GetStockObject(DEFAULT_GUI_FONT), sizeof(LOGFONT), &lf); 
			hfont = CreateFont (20,0,0,0, 500, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_OUTLINE_PRECIS,
            CLIP_DEFAULT_PRECIS, 5, VARIABLE_PITCH, TEXT ("Monotype Corsiva"));
			SendMessage (edit, WM_SETFONT, (WPARAM) hfont, true); 
			SendMessage (edit2, WM_SETFONT, (WPARAM) hfont, true); 
			SendMessage (button, WM_SETFONT, (WPARAM) hfont, true);
			SendMessage (maxx, WM_SETFONT, (WPARAM) hfont, true);
			SendMessage (maxy, WM_SETFONT, (WPARAM) hfont, true);
			SendMessage (maxz, WM_SETFONT, (WPARAM) hfont, true);
			SendMessage (acc, WM_SETFONT, (WPARAM) hfont, true);
			SendMessage (sbox, WM_SETFONT, (WPARAM) hfont, true);
	    	break;
		case WM_PAINT:
			PAINTSTRUCT ps;
			HDC hdcWindow; 
			hdcWindow = BeginPaint(hwnd, &ps);
			/****SETTO I CARATTERI DA UTILIZZARE: FONT, DIMENSIONI ECC...**/
			hfont = CreateFont (20,0,0,0, 500, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_OUTLINE_PRECIS,
            CLIP_DEFAULT_PRECIS, 5, VARIABLE_PITCH, TEXT ("Monotype Corsiva"));
			SelectObject (hdcWindow, hfont);
			SetRect (& rect, 100,100,700,200); 
            SetTextColor (hdcWindow, RGB (0,0,0));
			TextOut(hdcWindow,1,1,"Comporre l'equazione desiderata.",32);
			TextOut(hdcWindow,161,40,"=",1);
			TextOut(hdcWindow,10,80,"max x =",7);
			TextOut(hdcWindow,10,115,"max y =",7);
			TextOut(hdcWindow,10,150,"max z =",7);
			TextOut(hdcWindow,175,92,"precisione",10);
			EndPaint(hwnd,&ps);
			break;
		case WM_COMMAND:
			if (LOWORD(wParam)==2)
			{
				funpress++;                //Indica che è stato premuto il tasto CALCOLA!
				//Inizializzo gli array che contengono le espressioni
				char in[100]="",in2[100]="";
				//Prendo il testo negli edit e lo metto negli array
				GetWindowText(edit,in,100);
				GetWindowText(edit2,in2,100);
				//Mi trovo la notazione polacca inversa (RPN)
				rpn=FoundRPN(in);
				rpn2=FoundRPN(in2);
				//leggo i massimi e i minimi e la precisione:
                //ne inizializzo gli array
				char maxix[6]="",maxiz[6]="",maxiy[6]="",accu[5]="";
				//Li catturo dagli edit
				GetWindowText(acc,accu,5);
				GetWindowText(maxx,maxix,6);
				GetWindowText(maxy,maxiy,6);
				GetWindowText(maxz,maxiz,6);
				//Converto le string in float.
				Mx=atof(maxix);
				My=atof(maxiy);
				Mz=atof(maxiz);
				prec=atoi(accu);
				//Controllo lo stato della checkbox
				ckx=SendMessage(sbox, BM_GETCHECK, 0,0);
			}
			break;
		case WM_DESTROY:
				PostQuitMessage(0);
				break;
		default:
			return DefWindowProc(hwnd,message,wParam,lParam);
	}
	return 0;
}

//Creazione finestra principale/Dichiarazione di hinstance per le altre finestre.
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
   InitCommonControls ();      //Applicazione visual style
   WNDCLASSEX WndClass,WndClass3;
   HWND hwnd;
   MSG Msg;
   
   g_hInst = hInstance;
   //Main Window
   WndClass.cbSize        = sizeof(WNDCLASSEX);
   WndClass.style         = 0;
   WndClass.lpfnWndProc   = WndProc;
   WndClass.cbClsExtra    = 0;
   WndClass.cbWndExtra    = 0;
   WndClass.hInstance     = g_hInst;
   WndClass.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
   WndClass.hCursor       = LoadCursor(NULL, IDC_ARROW);
   WndClass.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1);
   WndClass.lpszMenuName  = NULL;
   WndClass.lpszClassName = g_szClassName;
   WndClass.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);
   //SystemWindow
   WndClass3.cbSize        = sizeof(WNDCLASSEX);
   WndClass3.style         = 0;
   WndClass3.lpfnWndProc   = WindowProcedure3;
   WndClass3.cbClsExtra    = 0;
   WndClass3.cbWndExtra    = 0;
   WndClass3.hInstance     = hInstance;
   WndClass3.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
   WndClass3.hCursor       = LoadCursor(NULL, IDC_ARROW);
   WndClass3.hbrBackground = (HBRUSH)(15);
   WndClass3.lpszMenuName  = NULL;
   WndClass3.lpszClassName = name2;
   WndClass3.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);

   //Main Window
   if(!RegisterClassEx(&WndClass))
   {
      MessageBox(0, "Window1 Registration Failed!", "Error!",
         MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL);
      return 0;
   }
   //System Window
    if(!RegisterClassEx(&WndClass3))
   {
      MessageBox(0, "Window3 Registration Failed!", "Error!",
         MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL);
      return 0;
   }
   //CREAZIONE:
   //Main Window
   hwnd = CreateWindowEx(
   WS_EX_CLIENTEDGE|WS_EX_LAYERED,
   g_szClassName,
   "Paint XY-Z-",
   WS_SYSMENU|WS_MINIMIZEBOX|WS_VISIBLE,
   175, 0, 1009, 1000,
   NULL, NULL, g_hInst, NULL);
     
    //incaso di errore
   if (hwnd == NULL)
   {
      MessageBox(0, "Window Creation Failed!", "Error!",
         MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL);
      return 0;
   }
   //Visualizza Main Window
   ShowWindow(hwnd, nCmdShow);
   UpdateWindow(hwnd);
   //Messaggio da Main Window
   while(GetMessage(&Msg, NULL, 0, 0))
   {
      TranslateMessage(&Msg);
      DispatchMessage(&Msg);
   }
   return Msg.wParam;
}






Inoltre vi è anche un file contenenti le funzioni ma sono riferite alla conversione in RPN, perciò quì non hano importanza.
aaa