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
Fusione colori - errori.c

errori.c

Caricato da: AldoBaldo
Scarica il programma completo

  1. #include "errori.h"
  2.  
  3. extern const char *kStrTitoloFP; /* usata per il titolo delle finestre */
  4.  
  5. static const char *gStrErr[] = {
  6.     "", /* zero = nessun errore */
  7.     "Memoria insufficiente. ",
  8.     "Finestra non creata. ",
  9.     "Tessera offscreen non creata. "
  10. };
  11.  
  12. /*==============================================================================
  13. Visualizza un messaggio di errore nel caso in cui si verifichi un errore
  14. attribuibile al programma, ricavandolo dall'elenco in gStrErr.
  15. ==============================================================================*/
  16.  
  17. INT32 ErroreNostrano( INT32 codice, HWND genitrice ) {
  18.     INT32 indice = codice - (codice&kErrLimMinErr);
  19.  
  20.     if( codice > kErrLimMinErr && codice < kErrLimMaxErr ) {
  21.         MessageBox( genitrice, gStrErr[indice],
  22.                     kStrTitoloFP, MB_OK | MB_ICONERROR );
  23.     }
  24.     else {
  25.         char msg[48];
  26.         wsprintf( msg, "Errore imprevisto!\nCodice numero %d", indice );
  27.         MessageBox( genitrice, msg, kStrTitoloFP, MB_OK | MB_ICONHAND );
  28.     }
  29.  
  30.     return codice;
  31. }
  32.  
  33. /*==============================================================================
  34. Visualizza un messaggio di errore nel caso in cui si verifichi un errore
  35. attribuibile al malfunzionamenti del sistema, ricavandolo dalla funzione
  36. FormatMessage().
  37. ==============================================================================*/
  38.  
  39. INT32 ErroreDiSistema( INT32 codice, HWND genitrice ) {
  40.     LPVOID msg = NULL;
  41.     DWORD esitoFM = 0;
  42.  
  43.     esitoFM = FormatMessage(
  44.         FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
  45.         NULL, codice, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
  46.         (LPTSTR)&msg, 1, NULL );
  47.  
  48.     if( esitoFM != 0 ) {
  49.         MessageBox( genitrice, (LPCSTR)msg,
  50.                     kStrTitoloFP, MB_OK | MB_ICONHAND );
  51.     }
  52.     else {
  53.         MessageBox( genitrice,
  54.                     "Errore di sistema non identificabile. ",
  55.                     kStrTitoloFP, MB_OK | MB_ICONHAND );
  56.     }
  57.  
  58.     if( msg ) LocalFree( msg );
  59.  
  60.     return codice;
  61. }
  62.  
  63. /*==============================================================================
  64. Verifica se l'errore riportato tramite il parametro "codice" e' da attribuire
  65. al programma o al sistema, rimandando quindi ad una delle due funzioni
  66. predisposte alla visualizzazione del messaggio d'errore.
  67. ==============================================================================*/
  68.  
  69. INT32 Errore( INT32 codice, HWND genitrice ) {
  70.     if( codice != kErrNessunErrore ) {
  71.         if( codice & kErrLimMinErr )
  72.             return ErroreNostrano( codice, genitrice );
  73.         else return ErroreDiSistema( codice, genitrice );
  74.     }
  75.  
  76.     return codice;
  77. }
  78.  
  79. /*==============================================================================
  80. Mostra una finestra di dialogo contenente il messaggio passato in msg, un'icona
  81. punto esclamativo e un pulsante "Ok".
  82. ==============================================================================*/
  83.  
  84. void Notifica( const char *msg, HWND genitrice ) {
  85.     MessageBox( genitrice, msg, kStrTitoloFP, MB_OK | MB_ICONINFORMATION );
  86. }