#include "errori.h"
#include "bubble_sort_demo.h"
static CONST CHAR *gStrErr[] = {
"", // zero = nessun errore
"Memoria insufficiente. ",
"Classe non registrata. ",
"Dimensioni dello schermo insufficienti. ",
"Finestra non creata. ",
"Offscreen non creato. "
// aggiungi qui i tuoi messaggi d'errore
};
/*==============================================================================
Visualizza un messaggio di errore nel caso in cui si verifichi un errore
attribuibile al programma, ricavandolo dall'elenco in gStrErr.
==============================================================================*/
VOID ErroreNostrano( INT32 codice, HWND genitrice ) {
INT32 indice = codice - (codice&kErrLimMinErr);
if( codice > kErrLimMinErr && codice < kErrLimMaxErr ) {
MessageBox( genitrice, gStrErr[indice],
NomeCompletoProgramma(NULL), MB_OK | MB_ICONERROR );
}
else {
CHAR msg[48];
wsprintf( msg, "Errore imprevisto!\nCodice numero %d", indice );
MessageBox( genitrice, msg,
NomeCompletoProgramma(NULL), MB_OK | MB_ICONHAND );
}
}
/*==============================================================================
Visualizza un messaggio di errore nel caso in cui si verifichi un errore
attribuibile al malfunzionamenti del sistema, ricavandolo dalla funzione
FormatMessage().
==============================================================================*/
VOID ErroreDiSistema( INT32 codice, HWND genitrice ) {
LPVOID msg = NULL;
DWORD esitoFM = 0;
esitoFM = FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL, codice, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&msg, 1, NULL );
if( esitoFM != 0 ) {
MessageBox( genitrice, (LPCSTR)msg,
NomeCompletoProgramma(NULL), MB_OK | MB_ICONHAND );
}
else {
MessageBox( genitrice,
"Errore di sistema non identificabile. ",
NomeCompletoProgramma(NULL), MB_OK | MB_ICONHAND );
}
if( msg ) LocalFree( msg );
}
/*==============================================================================
Verifica se l'errore riportato tramite il parametro "codice" e' da attribuire
al programma o al sistema, rimandando quindi ad una delle due funzioni
predisposte alla visualizzazione del messaggio d'errore.
==============================================================================*/
VOID Errore( INT32 codice, HWND genitrice ) {
if( codice != kErrNessunErrore ) {
if( codice & kErrLimMinErr )
ErroreNostrano( codice, genitrice );
else ErroreDiSistema( codice, genitrice );
}
}
/*==============================================================================
Mostra una finestra di dialogo contenente il messaggio passato in msg, un'icona
punto esclamativo e un pulsante "Ok".
==============================================================================*/
VOID Notifica( CONST CHAR *msg, HWND genitrice ) {
MessageBox( genitrice, msg,
NomeCompletoProgramma(NULL), MB_OK | MB_ICONINFORMATION );
}