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 - comandi.cpp

comandi.cpp

Caricato da: AldoBaldo
Scarica il programma completo

  1. #include "comandi.h"
  2.  
  3.  
  4. extern const char *kStrNomiPulsanti[kTotPulsanti];
  5.  
  6.  
  7. /*==============================================================================
  8. Estrae a sorte un nominativo.
  9. ==============================================================================*/
  10.  
  11. void Estrai( HWND hwnd ) {
  12.     GLOBALE *g = RicavaDatiGlobali( hwnd );
  13.  
  14.     if( g->e->ricava_nDaEstrarre() > 0 ) {
  15.         g->e->estrai();
  16.         AggiornaStatoPulsanti( hwnd );
  17.         MostraDati( hwnd );
  18.     }
  19. }
  20.  
  21.  
  22. /*==============================================================================
  23. Recupera dalla lista dei nominativi estratti l'ultimo estratto e lo ricolloca
  24. nella lista dei nominativi da estrarre.
  25. ==============================================================================*/
  26.  
  27. void Annulla( HWND hwnd ) {
  28.     GLOBALE *g = RicavaDatiGlobali( hwnd );
  29.  
  30.     if( g->e->ricava_nEstratti() > 0 ) {
  31.         g->e->annulla_estrazione();
  32.         AggiornaStatoPulsanti( hwnd );
  33.         MostraDati( hwnd );
  34.     }
  35. }
  36.  
  37.  
  38. /*==============================================================================
  39. Finestra di conferma per il comando "Ricarica".
  40. ==============================================================================*/
  41.  
  42. bool ConfermaRicarica( HWND hwnd ) {
  43.     UINT stile = MB_OKCANCEL | MB_ICONQUESTION | MB_DEFBUTTON2;
  44.     return MessageBox( hwnd, kStrConfermaRicarica,
  45.         kStrNomiPulsanti[kPPRicarica], stile ) == IDOK;
  46. }
  47.  
  48.  
  49. /*==============================================================================
  50. Ripristina i dati inizialmente caricati dal file.
  51. ==============================================================================*/
  52.  
  53. void Ricarica( HWND hwnd ) {
  54.     if( !ConfermaRicarica(hwnd) ) return;
  55.     GLOBALE *g = RicavaDatiGlobali( hwnd );
  56.  
  57.     const char *dati = CaricaFileDiTesto( g->percorso_file );
  58.  
  59.     if( dati == NULL ) {
  60.         Errore( kErrDatiNonCaricati, hwnd );
  61.         return;
  62.     }
  63.  
  64.     try {
  65.         g->e->carica_dati( dati );
  66.         AggiornaStatoPulsanti( hwnd );
  67.         MostraDati( hwnd );
  68.     } catch( ... ) {
  69.         Errore( kErrDatiNonCaricati, hwnd );
  70.     }
  71.  
  72.     delete[] dati;
  73. }
  74.  
  75.  
  76. /*==============================================================================
  77. Finestra di conferma per il comando "Inizializza".
  78. ==============================================================================*/
  79.  
  80. bool ConfermaInizializzazione( HWND hwnd ) {
  81.     UINT stile = MB_OKCANCEL | MB_ICONQUESTION | MB_DEFBUTTON2;
  82.     return MessageBox( hwnd, kStrConfermaInizializzazione,
  83.         kStrNomiPulsanti[kPPInizializza], stile ) == IDOK;
  84. }
  85.  
  86.  
  87. /*==============================================================================
  88. Ricollota tutti i nominativi nella lista dei nominativi da estrarre.
  89. ==============================================================================*/
  90.  
  91. void Inizializza( HWND hwnd ) {
  92.     GLOBALE *g = RicavaDatiGlobali( hwnd );
  93.  
  94.     if( g->e->ricava_nEstratti() > 0 ) {
  95.         if( !ConfermaInizializzazione(hwnd) ) return;
  96.  
  97.         // riconduce tutti i nominativi nell'elenco dei nomi da estrarre
  98.         g->e->reimposta();
  99.         AggiornaStatoPulsanti( hwnd );
  100.         MostraDati( hwnd );
  101.     }
  102. }
  103.  
  104.  
  105. /*==============================================================================
  106. Riduce il programma ad icona.
  107. ==============================================================================*/
  108.  
  109. void Nascondi( HWND hwnd ) {
  110.     ShowWindow( hwnd, SW_MINIMIZE );
  111. }
  112.  
  113.  
  114. /*==============================================================================
  115. Finestra di conferma per il comando "Chiudi".
  116. ==============================================================================*/
  117.  
  118. bool ConfermaChiusura( HWND hwnd ) {
  119.     UINT stile = MB_OKCANCEL | MB_ICONQUESTION | MB_DEFBUTTON2;
  120.     return MessageBox( hwnd, kStrConfermaChiusura,
  121.         kStrNomiPulsanti[kPPChiudi], stile ) == IDOK;
  122. }
  123.  
  124.  
  125. /*==============================================================================
  126. Registra gli elenchi nello stesso file dal quale sono stati caricati e esce dal
  127. progrgamma.
  128.  
  129.           NB - IL FILE ORIGINALE VIENE SOVRASCRITTO SENZA PREAVVISO
  130.  
  131. ==============================================================================*/
  132.  
  133. void Chiudi( HWND hwnd ) {
  134.     if( ConfermaChiusura(hwnd) ) {
  135.         GLOBALE *g = RicavaDatiGlobali( hwnd );
  136.         UINT errore = RegistraDati( hwnd, g->percorso_file );
  137.         if( errore != kErrNessunErrore ) Errore( errore, hwnd );
  138.         DestroyWindow( hwnd );
  139.     }
  140. }
  141.  
  142.  
  143. /*==============================================================================
  144. Se il puntatore del mouse (cursore) e' visibile, lo nasconde; se è invisibile,
  145. lo mostra.
  146. ==============================================================================*/
  147.  
  148. void MostraNascondiPuntatore( void ) {
  149.     static BOOL puntatore_visibile = TRUE;
  150.     puntatore_visibile = !puntatore_visibile;
  151.     ShowCursor( puntatore_visibile );
  152. }