+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 7 su 7

[C/C++] Cambiare formato carattere in un'applicazione console

  1. #1
    mydream non è in linea Scolaretto
    Post
    107
    Like Inviati  
    0
    Like Ricevuti  
    0
    ma quante domande stasera [img]smileys/smiley9.gif[/img]

    in che modo è possibile stampare a video una grandezza di carattere diversa da quella standard?e il tipo di carattere..?

    grazie.

  2. #2
    L'avatar di bottomap
    bottomap non è in linea Amanuense
    Post
    4,130
    Like Inviati  
    0
    Like Ricevuti  
    0
    Riciao mydream ...

    La risposta alla tua domanda dipende da che tipo di applicazione tu voglia scrivere...

    Per quanto riguarda una console application (quelle che girano in una sorta di finestra msdos detta, appunto, di console) è un discreto casino cambiare la grandezza dei font da programma... Il tutto viene gestito dal SO (infatti tutte le console msdos che apri hanno lo stesso carattere a meno che non lo imposti tramite le proprietà della finestra - Tasto DX sulla barra del titolo->Proprietà solo con win2000, winme e winxp).

    Puoi usare le API apposite per la gestione della console, che ti permettono di cambiare il codepage (il layout della tastiera), di scrivere un attributo assieme al carattere (scrivere con colori differenti), di settare la posizione del cursore, eccetera... purtroppo apparentemente nulla che possa cambiare il font.

    Una breve lista delle API disponibili per la console (presa da MSDN) è la seguente... ti rimando alla documentazione apposita per le singole funzioni:

    AllocConsole
    CreateConsoleScreenBuffer
    FillConsoleOutputAttribute
    FillConsoleOutputCharacter
    FlushConsoleInputBuffer
    FreeConsole
    GenerateConsoleCtrlEvent
    GetConsoleCP
    GetConsoleCursorInfo
    GetConsoleMode
    GetConsoleOutputCP
    GetConsoleScreenBufferInfo
    GetConsoleTitle
    GetLargestConsoleWindowSize
    GetNumberOfConsoleInputEvents
    GetNumberOfConsoleMouseButtons
    GetStdHandle
    HandlerRoutine
    PeekConsoleInput
    ReadConsole
    ReadConsoleInput
    ReadConsoleOutput
    ReadConsoleOutputAttribute
    ReadConsoleOutputCharacter
    ScrollConsoleScreenBuffer
    SetConsoleActiveScreenBuffer
    SetConsoleCP
    SetConsoleCtrlHandler
    SetConsoleCursorInfo
    SetConsoleCursorPosition
    SetConsoleMode
    SetConsoleOutputCP
    SetConsoleScreenBufferSize
    SetConsoleTextAttribute
    SetConsoleTitle
    SetConsoleWindowInfo
    SetStdHandle
    WriteConsole
    WriteConsoleInput
    WriteConsoleOutput
    WriteConsoleOutputAttribute
    WriteConsoleOutputCharacter

    Come vedi ce n'è un po'per tutti i gusti, ma mancano alcune funzioni (e visto che è una console window non puoi nemmeno ricorrere al caro buon vecchio assembler per rimappare un font).

    Se invece la tua applicazione è una win32 standard application o una applicazione MFC, ovviamente hai il pieno controllo dei font che usi per scrivere, ma se sono pochi mesi che programmi è meglio che ti impratichisci prima col linguaggio e poi passi ad un'applicazione "grafica". In questo campo sono infatti implicati i DC (Device Context) e i font di sistema, ma il tutto avviene in una procedura asincrona di gestione della coda di messaggi... insomma, in due parole, passa ad approfondire l'argomento in seguito.

    Ciaociao
    Ultima modifica di bottomap; 15-06-2007 19:25 
    ℹ️ Leggi di più su bottomap ...

  3. #3
    mydream non è in linea Scolaretto
    Post
    107
    Like Inviati  
    0
    Like Ricevuti  
    0
    [img]smileys/smiley2.gif[/img] ti ringrazio per la mega lista, ma....
    io cercavo di riferirmi ad una cosa piu semplice e "rozza"...ad esempio
    per pulire lo schermo, dato che '\f' non funziona piu faccio così:
    system("cls"); //dove cls è un comando dos ovviamente
    //che usavo tempo fa per i file batch

    oppure per i colori:
    system("COLOR A4");//quuesto cambia sfondo e carattere
    ecco, quindi esiste una cosa del genere anche per i caratteri? e il tipo di caratteri?
    una cosa tipo: system("cambiacarattere"); //??

  4. #4
    L'avatar di bottomap
    bottomap non è in linea Amanuense
    Post
    4,130
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao,
    Purtroppo non credo che esista una system cambiacarattere... provo a fare qualche ricerca ma visto che il set di caratteri è impostato dal SO credo che non esista proprio.

    Ciaociao
    Ultima modifica di bottomap; 15-06-2007 19:25 
    ℹ️ Leggi di più su bottomap ...

  5. #5
    mydream non è in linea Scolaretto
    Post
    107
    Like Inviati  
    0
    Like Ricevuti  
    0
    bè...anche il colore del carattere e dello sfondo è impostato dal sistema operativo...eppure si possono cambiare..cercherò
    grazie

  6. #6
    L'avatar di bottomap
    bottomap non è in linea Amanuense
    Post
    4,130
    Like Inviati  
    0
    Like Ricevuti  
    0
    E'un po'un casino da spiegare, ma sono due cose leggermente differenti...

    Certamente la possibilità di cambiare il font è una mancanza (più o meno grave ma pur sempre una mancanza).

    Il fatto è che l'attributo del carattere lo puoi impostare mentre scrivi (qualsiasi sia il font, su uno schermo msdos è possibile specificare un attributo di carattere)... il font invece (almeno in msdos) viene caricato in ram dal SO e, per modificarlo, è necessario sovrascrivere in ram il vecchio (con effetti spesso piuttosto pesanti sul contenuto precedente del buffer video)...

    Le console applications, come hai notato dalla lista di funzioni che ho postato è un'emulazione del vecchio dos (le vecchie funzioni di interrupt del msdos non funzionano più, anzi crashano) e non esiste una effettiva locazione in memoria del font (il tutto viene emulato da windows), per cui deve essere il SO soprastante a dare l'ordine di cambiare il font, e non l'applicazione che gira nella finestra. Purtroppo sembrerebbe proprio un cane che si morde la coda...

    Ciaociao
    Ultima modifica di bottomap; 15-06-2007 19:26 
    ℹ️ Leggi di più su bottomap ...

  7. #7
    mydream non è in linea Scolaretto
    Post
    107
    Like Inviati  
    0
    Like Ricevuti  
    0
    ok...continuo a cercare..ma se per caso trovi qualcosa mi fai sapere? ciao!

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Risposte: 4
    Ultimo Post: 17-02-2013, 20:25
  2. Creare form da applicazione console
    Da Robypuma nel forum Visual Basic .Net
    Risposte: 2
    Ultimo Post: 23-09-2009, 06:03
  3. Risposte: 8
    Ultimo Post: 16-09-2007, 21:46
  4. Risposte: 2
    Ultimo Post: 13-09-2007, 18:10
  5. Risposte: 1
    Ultimo Post: 19-11-2005, 08:02