#include "main.h"
/// === VARIABILI GLOBALI ======================================================
const char *kStrNomiPulsanti[kTotPulsanti] = {
"Chiudi", "Nascondi", "Inizializza", "Ricarica", "Annulla", "Estrai" };
/// === FUNZIONE D'ACCESSO AL PROGRAMMA ========================================
int WINAPI WinMain( HINSTANCE hndIstanza,
HINSTANCE hndIstanzaPrecedente,
LPSTR lpCmdLine, int nCmdShow ) {
UINT errore = kErrNessunErrore;
HWND hwnd = NULL;
GLOBALE g = {0};
if( (errore=InizializzaGlobale(&g,hndIstanza)) != kErrNessunErrore )
goto uscita;
if( (errore=RegistraClasseFinestraPrincipale(&g)) != kErrNessunErrore )
goto uscita;
if( (errore=CreaFinestraPrincipale(&hwnd,&g,nCmdShow)) != kErrNessunErrore )
goto uscita;
if( (errore=RicavaPercorsoFile(hwnd,&g,lpCmdLine)) != kErrNessunErrore )
goto uscita;
if( g.percorso_file == NULL ) goto uscita;
if( (errore=InizializzaProgramma(hwnd)) != kErrNessunErrore ) goto uscita;
InvalidateRect( hwnd, NULL, FALSE );
MSG msg;
ZeroMemory( &msg, sizeof(MSG) );
while( GetMessage(&msg, NULL, 0, 0) > 0 ) {
TranslateAccelerator( hwnd, g.hndScorciatoie, &msg );
TranslateMessage( &msg );
DispatchMessage( &msg );
}
uscita:
Errore( errore, hwnd );
DismettiTutto( &g );
return msg.wParam;
}
/// === WINDOW PROCEDURE DELLA FINESTRA PRINCIPALE =============================
LRESULT CALLBACK MainWndProc( HWND hwnd, UINT msg, WPARAM wPar, LPARAM lPar ) {
GLOBALE *g = RicavaDatiGlobali( hwnd );
switch( msg ) {
case WM_COMMAND:
switch( LOWORD(wPar) ) {
case IDM_CHIUDI:
g->pulsanti[kPPChiudi]->simula_click();
Chiudi( hwnd );
break;
case IDM_NASCONDI:
g->pulsanti[kPPNascondi]->simula_click();
Nascondi( hwnd );
break;
case IDM_INIZIALIZZA:
g->pulsanti[kPPInizializza]->simula_click();
Inizializza( hwnd );
break;
case IDM_RICARICA:
g->pulsanti[kPPRicarica]->simula_click();
Ricarica( hwnd );
break;
case IDM_ANNULLA:
g->pulsanti[kPPAnnulla]->simula_click();
Annulla( hwnd );
break;
case IDM_ESTRAI:
g->pulsanti[kPPEstrai]->simula_click();
Estrai( hwnd );
break;
case IDM_PUNTATORE:
MostraNascondiPuntatore();
break;
default: ;
}
break;
case WM_LBUTTONDOWN:
GestisciMouseDown( hwnd, LOWORD(lPar), HIWORD(lPar) );
break;
case WM_MOUSEMOVE:
GestisciMouseMove( hwnd, LOWORD(lPar), HIWORD(lPar) );
break;
case WM_PAINT:
AggiornaFinestraPrincipale( hwnd );
break;
case WM_CLOSE:
Chiudi( hwnd );
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc( hwnd, msg, wPar, lPar );
}
return 0;
}