C Konsolenschriftgröße ändern

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • C Konsolenschriftgröße ändern

    Hallo Leute,

    ich hab da mal eine Frage,

    Ist es irgendwie möglich, die Schriftgröße (und vielleicht auch die Schriftart) der Windows-Konsole im C-Programm selbst zu ändern, also nicht über die Einstellungen? (ich nehme auch C++ Code an ;) )

    Wäre wirklich schön wenn das ginge :)
  • Nein, es geht leider nicht.

    Du kannst aber tricksen und dir die Buchstaben "bauen".
    Also wie ich hier jetzt ein D baue:

    Source Code

    1. //**
    2. //* *
    3. //* *
    4. //* *
    5. //**

    Das machst du dann über cout oder printf und fertig.
    Ich empfehle für Sonderzeichen "(unsigend char)ASCII-NUMMER" nutzen. Also zum Beispiel würde dann

    Source Code

    1. cout << (unsigned char)178;

    das "▓" generieren.

    So könntest du dann so was bauen:
    ▓ ......... ▓
    ..... ▓
    ▓ ......... ▓
    . ▓▓▓▓▓▓
    Denk dir die Punkte mal weg. :D

    MfG
    Check
  • Sorry, hab eben einfach drauf los geantwortet. Es klappt. ;)
    Hier mal ein Beispiel des "Hello World" Programms in C++.

    Source Code

    1. #include <windows.h>
    2. #include <iostream>
    3. using namespace std;
    4. PCONSOLE_FONT_INFOEX testFont;
    5. int main()
    6. {
    7. HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    8. testFont->dwFontSize.X = 10;
    9. testFont->dwFontSize.Y = 20;
    10. SetCurrentConsoleFontEx(hOut, TRUE, testFont);
    11. cout<<"Hello World"<<endl;
    12. getchar();
    13. return 0;
    14. }
    Display All


    MfG
    Check

    PS: Farbe usw. sind auch so ziemlich alle änderbar. Sonst könnte man ja die CMD in Windows auch nicht verändern, zwar so ziemlich nicht das Gleiche, aber zur Veranschaulichung... ;) Lässt sich nämlich schön in Windows ändern.
  • ne, da spuckt er nur nen Error aus, ...nagut, eher 3 Errors:

    Compiling: main.cpp
    9: error: 'PCONSOLE_FONT_INFOEX' does not name a type
    In function 'int main()':
    14: error: 'testFont' was not declared in this scope
    17: error: 'SetCurrentConsoleFontEx' was not declared in this scope

    ahja, und das mit Farbe und so weiß ich eh,....mein neuestes Programm ist auch etwas verrückt in der Hinsicht ;) jetzt fehlt hald nurmehr das wegen der Schriftgröße
    (ich brauch das Programm prinzipiell für die Schule, aber ich bin über die Angabe schon so ziemlich 300% hinausgeschossen ;) )

    The post was edited 1 time, last by Gamemaster1994 ().

  • Hmm....
    Ja stimmt, sorry².
    Ein blick in die MSDN geworfen und der Fehler wurde gefunden. ^^

    Source Code

    1. #include <Windows.h>
    2. #include <iostream>
    3. using namespace std;
    4. int main()
    5. {
    6. HANDLE outcon = GetStdHandle(STD_OUTPUT_HANDLE);
    7. CONSOLE_FONT_INFOEX font;
    8. font.cbSize=sizeof(CONSOLE_FONT_INFOEX);
    9. GetCurrentConsoleFontEx(outcon, false, &font);
    10. font.dwFontSize.X = 10;
    11. font.dwFontSize.Y = 10;
    12. SetCurrentConsoleFontEx(outcon, false, &font);
    13. cout << "Hallo Welt!" << endl;
    14. getchar();
    15. return(0);
    16. }
    Display All

    //TESTED


    MfG
    Check
  • jaja, hab isch :)

    mittlerweile bin ich bei dem hier:

    Source Code

    1. #include <Windows.h>
    2. #include <iostream>
    3. using namespace std;
    4. typedef struct _CONSOLE_FONT_INFOEX {
    5. ULONG cbSize;
    6. DWORD nFont;
    7. COORD dwFontSize;
    8. UINT FontFamily;
    9. UINT FontWeight;
    10. WCHAR FaceName[LF_FACESIZE];
    11. } CONSOLE_FONT_INFOEX, *PCONSOLE_FONT_INFOEX;
    12. int main()
    13. {
    14. HANDLE outcon = GetStdHandle(STD_OUTPUT_HANDLE);
    15. CONSOLE_FONT_INFOEX font;
    16. font.cbSize=sizeof(CONSOLE_FONT_INFOEX);
    17. GetCurrentConsoleFontEx(outcon, false, &font);
    18. font.dwFontSize.X = 25;
    19. font.dwFontSize.Y = 25;
    20. SetCurrentConsoleFontEx(outcon, false, &font);
    21. cout << "Hallo Welt!" << endl;
    22. getch();
    23. return(0);
    24. }
    Display All


    Nur wie schon gesagt, nurmehr die Definition von GetCurrentConsoleFontEx und SetCurrentConsoleFontEx dann passt es^^
    oder hab ich schon wieder irgendwo Blödsinn gebaut?
  • Source Code

    1. #include <windows.h>
    2. #include <iostream>
    3. using namespace std;
    4. typedef struct CONSOLE_FONT {
    5. DWORD index;
    6. COORD dim;
    7. } *PCONSOLE_FONT;
    8. typedef BOOL (WINAPI *GetConsoleFontInfoFunc)(HANDLE,BOOL,DWORD,PCONSOLE_FONT);
    9. typedef COORD (WINAPI *GetConsoleFontSizeFunc)(HANDLE, DWORD);
    10. typedef BOOL (WINAPI *GetCurrentConsoleFontFunc)(HANDLE, BOOL, PCONSOLE_FONT);
    11. typedef DWORD (WINAPI *GetNumberOfConsoleFontsFunc)();
    12. typedef BOOL (WINAPI *SetConsoleFontFunc)(HANDLE, DWORD);
    13. GetConsoleFontInfoFunc pGetConsoleFontInfo;
    14. GetConsoleFontSizeFunc pGetConsoleFontSize;
    15. GetCurrentConsoleFontFunc pGetCurrentConsoleFont;
    16. GetNumberOfConsoleFontsFunc pGetNumberOfConsoleFonts;
    17. SetConsoleFontFunc pSetConsoleFont;
    18. PCONSOLE_FONT fonts = NULL;
    19. int GetAvailableFonts(HANDLE hCon,PCONSOLE_FONT *fonts) {
    20. int fontcount = pGetNumberOfConsoleFonts();
    21. *fonts = new CONSOLE_FONT[fontcount];
    22. pGetConsoleFontInfo(hCon,0,fontcount,*fonts);
    23. return fontcount;
    24. }
    25. BOOL SetFont(HANDLE hCon,int index) {
    26. if (!pSetConsoleFont(hCon,index)) {
    27. return FALSE;
    28. }
    29. return TRUE;
    30. }
    31. BOOL Init() {
    32. HINSTANCE hLib = NULL;
    33. BOOL bRet = TRUE;
    34. hLib = LoadLibrary("KERNEL32.DLL");
    35. if (hLib == NULL) {
    36. return FALSE;
    37. }
    38. pGetConsoleFontInfo = (GetConsoleFontInfoFunc)GetProcAddress(hLib,"GetConsoleFontInfo");
    39. pGetConsoleFontSize = (GetConsoleFontSizeFunc)GetProcAddress(hLib,"GetConsoleFontSize");
    40. pGetCurrentConsoleFont = (GetCurrentConsoleFontFunc)GetProcAddress(hLib,"GetCurrentConsoleFont");
    41. pGetNumberOfConsoleFonts = (GetNumberOfConsoleFontsFunc)GetProcAddress(hLib,"GetNumberOfConsoleFonts");
    42. pSetConsoleFont = (SetConsoleFontFunc)GetProcAddress(hLib,"SetConsoleFont");
    43. return bRet;
    44. }
    45. int main() {
    46. PCONSOLE_FONT fonts = NULL;
    47. HANDLE hConsole = GetStdHandle( STD_ERROR_HANDLE );
    48. Init();
    49. cout << "Hello World!" << endl;
    50. getchar();
    51. return(0);
    52. }
    Display All


    Das sollte denke ich auch auf dem GCC laufen!

    MfG
    Check