Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Estrazione - main.cpp

main.cpp

Caricato da: AldoBaldo
Scarica il programma completo

  1. #include "main.h"
  2.  
  3.  
  4. /// === VARIABILI GLOBALI ======================================================
  5.  
  6. const char *kStrNomiPulsanti[kTotPulsanti] = {
  7.     "Chiudi", "Nascondi", "Inizializza", "Ricarica", "Annulla", "Estrai" };
  8.  
  9.  
  10. /// === FUNZIONE D'ACCESSO AL PROGRAMMA ========================================
  11.  
  12. int WINAPI WinMain( HINSTANCE hndIstanza,
  13.                     HINSTANCE hndIstanzaPrecedente,
  14.                     LPSTR lpCmdLine, int nCmdShow ) {
  15.  
  16.     UINT errore = kErrNessunErrore;
  17.     HWND hwnd = NULL;
  18.     GLOBALE g = {0};
  19.  
  20.     if( (errore=InizializzaGlobale(&g,hndIstanza)) != kErrNessunErrore )
  21.         goto uscita;
  22.  
  23.     if( (errore=RegistraClasseFinestraPrincipale(&g)) != kErrNessunErrore )
  24.         goto uscita;
  25.  
  26.     if( (errore=CreaFinestraPrincipale(&hwnd,&g,nCmdShow)) != kErrNessunErrore )
  27.         goto uscita;
  28.  
  29.     if( (errore=RicavaPercorsoFile(hwnd,&g,lpCmdLine)) != kErrNessunErrore )
  30.         goto uscita;
  31.     if( g.percorso_file == NULL ) goto uscita;
  32.  
  33.     if( (errore=InizializzaProgramma(hwnd)) != kErrNessunErrore ) goto uscita;
  34.  
  35.     InvalidateRect( hwnd, NULL, FALSE );
  36.  
  37.     MSG msg;
  38.     ZeroMemory( &msg, sizeof(MSG) );
  39.  
  40.     while( GetMessage(&msg, NULL, 0, 0) > 0 ) {
  41.         TranslateAccelerator( hwnd, g.hndScorciatoie, &msg );
  42.         TranslateMessage( &msg );
  43.         DispatchMessage( &msg );
  44.     }
  45.  
  46.     uscita:
  47.     Errore( errore, hwnd );
  48.     DismettiTutto( &g );
  49.     return msg.wParam;
  50. }
  51.  
  52.  
  53. /// === WINDOW PROCEDURE DELLA FINESTRA PRINCIPALE =============================
  54.  
  55. LRESULT CALLBACK MainWndProc( HWND hwnd, UINT msg, WPARAM wPar, LPARAM lPar ) {
  56.     GLOBALE *g = RicavaDatiGlobali( hwnd );
  57.  
  58.     switch( msg ) {
  59.         case WM_COMMAND:
  60.             switch( LOWORD(wPar) ) {
  61.                 case IDM_CHIUDI:
  62.                     g->pulsanti[kPPChiudi]->simula_click();
  63.                     Chiudi( hwnd );
  64.                     break;
  65.                 case IDM_NASCONDI:
  66.                     g->pulsanti[kPPNascondi]->simula_click();
  67.                     Nascondi( hwnd );
  68.                     break;
  69.                 case IDM_INIZIALIZZA:
  70.                     g->pulsanti[kPPInizializza]->simula_click();
  71.                     Inizializza( hwnd );
  72.                     break;
  73.                 case IDM_RICARICA:
  74.                     g->pulsanti[kPPRicarica]->simula_click();
  75.                     Ricarica( hwnd );
  76.                     break;
  77.                 case IDM_ANNULLA:
  78.                     g->pulsanti[kPPAnnulla]->simula_click();
  79.                     Annulla( hwnd );
  80.                     break;
  81.                 case IDM_ESTRAI:
  82.                     g->pulsanti[kPPEstrai]->simula_click();
  83.                     Estrai( hwnd );
  84.                     break;
  85.                 case IDM_PUNTATORE:
  86.                     MostraNascondiPuntatore();
  87.                     break;
  88.                 default: ;
  89.             }
  90.             break;
  91.  
  92.         case WM_LBUTTONDOWN:
  93.             GestisciMouseDown( hwnd, LOWORD(lPar), HIWORD(lPar) );
  94.             break;
  95.  
  96.         case WM_MOUSEMOVE:
  97.             GestisciMouseMove( hwnd, LOWORD(lPar), HIWORD(lPar) );
  98.             break;
  99.  
  100.         case WM_PAINT:
  101.             AggiornaFinestraPrincipale( hwnd );
  102.             break;
  103.  
  104.         case WM_CLOSE:
  105.             Chiudi( hwnd );
  106.             break;
  107.  
  108.         case WM_DESTROY:
  109.             PostQuitMessage(0);
  110.             break;
  111.  
  112.         default:
  113.             return DefWindowProc( hwnd, msg, wPar, lPar );
  114.     }
  115.  
  116.     return 0;
  117. }