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
Code Pages - codepages.h

codepages.h

Caricato da: AldoBaldo
Scarica il programma completo

  1. /** =========== CODE PAGES v1.0 - luglio 2016, di Aldo Carpanelli ==============
  2. Il programma permette di "ispezionare" il code page (character set) usato nella
  3. console del C nell'ambito di una certa localizzazione.
  4. Funziona solo in ambiente Windows, non portabile.
  5. =============================================================================**/
  6.  
  7. #ifndef CODEPAGES_H_INCLUDED
  8. #define CODEPAGES_H_INCLUDED
  9.  
  10. /** ===> INCLUSIONI <======================================================= **/
  11.  
  12. #include <windows.h>
  13. #include <stdio.h>
  14. #include <stdlib.h>
  15. #include <string.h>
  16. #include <locale.h>
  17.  
  18. /** ===> COSTANTI <========================================================= **/
  19.  
  20. enum {
  21.     kCmndEsci,
  22.     kCmndCambiaLocale,
  23.     kCmndCar_0_31,
  24.     kCmndCar_32_127,
  25.     kCmndCar_128_255,
  26.     kTotVociMenu
  27. };
  28.  
  29. /** ===> STRINGHE <========================================================= **/
  30.  
  31. const char *kStrVociMenu[kTotVociMenu] = {
  32.     "Esci dal programma",
  33.     "Cambia locale",
  34.     "Mostra caratteri 1-31",
  35.     "Mostra caratteri 32-127",
  36.     "Mostra caratteri 128-255"
  37. };
  38.  
  39. // usate in "main()"
  40. const char kStrNomeProgramma[] =
  41.     "Code Pages";
  42. const char kStrErrMemoriaInsuff[] =
  43.     " ERRORE!\n Memoria insufficiente";
  44. const char kStrErrDimConsoleIlleggibili[] =
  45.     " ERRORE!\n Impossibile verificare le dimensioni della console";
  46.  
  47. // usate in "Menu()"
  48. const char kStrBoxTitolo_1[] =
  49.     "C O D E   P A G E S\nvisualizza i caratteri della localizzazione";
  50. const char kStrSceltaComando_1[] =
  51.     " Esprimi la tua scelta: ";
  52. const char kStrSceltaComando_2[] =
  53.     " Scelta non valida, riprova: ";
  54.  
  55. // usate in "CambiaLocale()"
  56. const char kStrBoxTitolo_2[] =
  57.     "CAMBIAMENTO LOCALE";
  58. const char kStrEtichLocale[] =
  59.     " Locale corrente: ";
  60. const char kStrRichiestaLocale[] =
  61.     " Stringa identificativa\n della nuova localizzazione:";
  62. const char kStrErrStrLocIgnota[] =
  63.     " ERRORE!\n Stringa non riconosciuta";
  64.  
  65. // usate in "VisualizzaTabella()"
  66. const char kStrTitTab_1[] =
  67.     "CARATTERI 1-31";
  68. const char kStrTitTab_2[] =
  69.     "CARATTERI 32-127";
  70. const char kStrTitTab_3[] =
  71.     "CARATTERI 128-255";
  72. const char kStrSottoTitTab[] =
  73.     "locale: ";
  74.  
  75. /** ===> PROTOTIPI <======================================================== **/
  76.  
  77. bool RicavaNumeroColonneConsole( void );
  78. void ImpostaTitoloFinestra( const char *titolo );
  79. void ImpostaColoriConsole( WORD c );
  80. int Menu( void );
  81. void CambiaLocale( char *loc, int dimMaxLoc, char *buff, int dimBuff );
  82. void VisualizzaTabella( const char *loc, char *buff, int tipo );
  83. char *ListaCaratteri_0_31( char *buff );
  84. char *ListaCaratteri_32_127( char *buff );
  85. char *ListaCaratteri_128_255( char *buff );
  86. void Centrato( const char *s, int largh );
  87. void Box( const char *s, int largh, int marg, bool txt_centrato, bool X2 );
  88. void Errore( const char *msg );
  89.  
  90. /** ===> MACRO <============================================================ **/
  91.  
  92. #define CLS system("cls")
  93. #define PAUSE system("pause")
  94. #define A_CAPO putchar( '\n' )
  95. #define SPAZI(n) for( int i=0; i<(n); ++i ) putchar( ' ' )
  96. #define RIGA(n) for( int i=0; i<(n); ++i ) putchar( '-' )
  97. #define RIGA_VERT putchar( '|' )
  98. #define RIGA_2(n) for( int i=0; i<(n); ++i ) putchar( '=' )
  99.  
  100. #define COLORE_TESTO(r,g,b,i)   (WORD)(((r)?FOREGROUND_RED:0)|\
  101.                                       ((g)?FOREGROUND_GREEN:0)|\
  102.                                       ((b)?FOREGROUND_BLUE:0)|\
  103.                                       ((i)?FOREGROUND_INTENSITY:0))
  104. #define COLORE_SFONDO(r,g,b,i)  (WORD)(((r)?BACKGROUND_RED:0)|\
  105.                                       ((g)?BACKGROUND_GREEN:0)|\
  106.                                       ((b)?BACKGROUND_BLUE:0)|\
  107.                                       ((i)?BACKGROUND_INTENSITY:0))
  108. #define COL_DFLT (WORD)(COLORE_TESTO(0,1,0,1)|COLORE_SFONDO(0,0,0,0))
  109. #define GIALLO (WORD)(COLORE_TESTO(1,1,0,1)|COLORE_SFONDO(0,0,0,0))
  110. #define ROSSO (WORD)(COLORE_TESTO(1,0,0,1)|COLORE_SFONDO(0,0,0,0))
  111.  
  112.  
  113. #endif // CODEPAGES_H_INCLUDED