cmd mit cpp verändern
-
hallo
wie kann ich mit cpp die schriftgröße von der cmd vergrößern.
gibt es da irgendwo eine funktion, wenn ja könnt ihr da mal ein beispiel durchnehmen
-
Ich habe noch nie gesehen, dass das gemacht wurde und glaube, das ist nur systemweit vom Benutzer veränderbar. Was du aber definitiv verändern kannst ist die Größe des Konsolenbuffers, sodass du mehr als die üblichen 80x25 Zeichen hast.
EDIT: Geht doch, jedoch undokumentiert. Ich arbeite an einer Lösung
-
So, hier das Ergebnis der Bemühungen
#include <windows.h> #include <iostream> typedef struct CONSOLE_FONT { DWORD index; COORD dim; } *PCONSOLE_FONT; typedef BOOL (WINAPI *GetConsoleFontInfoFunc)(HANDLE,BOOL,DWORD,PCONSOLE_FONT); typedef COORD (WINAPI *GetConsoleFontSizeFunc)(HANDLE, DWORD); typedef BOOL (WINAPI *GetCurrentConsoleFontFunc)(HANDLE, BOOL, PCONSOLE_FONT); typedef DWORD (WINAPI *GetNumberOfConsoleFontsFunc)(); typedef BOOL (WINAPI *SetConsoleFontFunc)(HANDLE, DWORD); GetConsoleFontInfoFunc pGetConsoleFontInfo; GetConsoleFontSizeFunc pGetConsoleFontSize; GetCurrentConsoleFontFunc pGetCurrentConsoleFont; GetNumberOfConsoleFontsFunc pGetNumberOfConsoleFonts; SetConsoleFontFunc pSetConsoleFont; PCONSOLE_FONT fonts = NULL; int GetAvailableFonts(HANDLE hCon,PCONSOLE_FONT *fonts) { int fontcount = pGetNumberOfConsoleFonts(); *fonts = new CONSOLE_FONT[fontcount]; pGetConsoleFontInfo(hCon,0,fontcount,*fonts); return fontcount; } BOOL SetFont(HANDLE hCon,int index) { if (!pSetConsoleFont(hCon,index)) { return FALSE; } return TRUE; } BOOL Init() { HINSTANCE hLib = NULL; BOOL bRet = TRUE; hLib = LoadLibrary("KERNEL32.DLL"); if (hLib == NULL) { return FALSE; } pGetConsoleFontInfo = (GetConsoleFontInfoFunc)GetProcAddress(hLib,"GetConsoleFontInfo"); pGetConsoleFontSize = (GetConsoleFontSizeFunc)GetProcAddress(hLib,"GetConsoleFontSize"); pGetCurrentConsoleFont = (GetCurrentConsoleFontFunc)GetProcAddress(hLib,"GetCurrentConsoleFont"); pGetNumberOfConsoleFonts = (GetNumberOfConsoleFontsFunc)GetProcAddress(hLib,"GetNumberOfConsoleFonts"); pSetConsoleFont = (SetConsoleFontFunc)GetProcAddress(hLib,"SetConsoleFont"); return bRet; } int main() { PCONSOLE_FONT fonts = NULL; HANDLE hConsole = GetStdHandle( STD_ERROR_HANDLE ); Init(); int count = GetAvailableFonts(hConsole,&fonts); for (int i=0;i<count;i++) { std::cout << "Font " << fonts[i].index << "-(" << fonts[i].dim.X << ":" << fonts[i].dim.Y << ")\n"; SetFont(hConsole,fonts[i].index); Sleep(1000); } std::cin.get(); }
-
schade, läuft wahrscheinlich nur unter xp.
win98 nimmt es nicht.
teste ich morgen mal auf arbeit.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ja, ist ja undokumentiert, daher hab ich auch keine Ahnung, von welchen Systemen das unterstützt wird. Microsoft scheint wohl nicht zu wollen, dass die Darstellung der Konsole inkonsistent programmiert werden kann.
Aus dem gleichen Grund haben sie ja auch die Beschränkung für die UxThemes eingebaut. Aber ich sehe gerade, dass Microsoft ab XP großzügigerweise die Funktion GetCurrentConsoleFont in den Status einer dokumentierten Funktion erhoben hat ;
Liegt aber wahrscheinlich daran, dass die Konsole unter Win9x ja noch nicht diese abstrakte Implementierung hatte, sondern eine DOS-Konsole war.EDIT: Ich hatte bei meinen Erkundungen übrigens folgende Funktionen gefunden. Wäre mal interessant, diese näher zu erkunden. Warum gibt es bloß so viele undokumentierte Konsolenfunktionen!?
- AddConsoleAlias
- CloseConsoleHandle
- ConsoleSubst
- ExpungeConsoleCommandHistory
- GetConsoleAlias
- GetConsoleAliasExes
- GetConsoleAliasExesLength
- GetConsoleAliases
- GetConsoleAliasesLength
- GetConsoleCommandHistory
- GetConsoleCommandHistoryLength
- GetConsoleDisplayMode
- GetConsoleFontInfo
- GetConsoleFontSize
- GetConsoleHardwareState
- GetConsoleInputWaitHandle
- GetCurrentConsoleFont
- GetNumberOfConsoleFonts
- InvalidateConsoleDIBits
- OpenConsoleW
- SetConsoleCursor
- SetConsoleDisplayMode
- SetConsoleFont
- SetConsoleHardwareState
- SetConsoleKeyShortcuts
- SetConsoleMaximumWindowSize
- SetConsoleMenuClose
- SetConsoleNumberOfCommands
- SetConsolePalette
- SetLastConsoleEventActive
- ShowConsoleCursor
- VerifyConsoleIoHandle
- DuplicateConsoleHandle
- GetConsoleInputExeName
- GetConsoleKeyboardLayoutName
- ReadConsoleInputEx
- SetConsoleIcon
- SetConsoleInputExeName
-
thx für info.
die konsole unter 98 ist jedoch ebenso ein "fenster", lapidar ausgedrückt, viele der funktionalitäten deiner liste funktionieren einwandfrei.
werde den code nächste woche unter 98 nochmal anzuschaun.ich nutze gerne die consolenapi..
na ja, die nächsten generationen werden unter windows sowieso keine konsole mehr zu sehen bekommen, so denke ich.
-
Naja, ich habe jetzt mal die kernel32-DLLs von WindowsME und WindowsXP untersucht und verglichen und konnte daher die folgende Liste von Funktionen erstellen, die in WindowsXP vorhanden waren und in WindowsME nicht. Dann hat Microsoft wohl die neuen Funktionen (noch) nicht in die MSDN aufgenommen, damit Konsolenanwendungen von Entwicklern plattformunabhängig entwickelt werden können, so lange es (noch) Rechner gibt, die mit einem 9x-System laufen.
Die Funktionen zum Setzen der Schriftgröße werden also auf diesem Wege definitiv nicht unterstützt.Ich finde die Konsole auch recht praktisch für kompakte Anwendungen, die keine überladene Benutzeroberfläche benötigen. Ich glaube nicht, dass Microsoft die Unterstützung für die Konsole entfernen wird, da sie ja seit W2k ziemlich stark ausgebaut wurde und auch immer mehr Tools zur Administration von Windows über die Konsole hinzugefügt wurden.
AddConsoleAlias AttachConsole ExpungeConsoleCommandHistory GetConsoleAlias GetConsoleAliasExes GetCOnsoleAliasExesLength GetConsoleAliases GetConsoleAliasesLength GetConsoleCharType GetConsoleCommandHistory GetConsoleCommandHistoryLength GetConsoleCursormode GetConsoleDisplayMode GetConsoleFontInfo GetConsoleFontSize GetConsoleHardwareState GetConsoleInputExeName GetConsoleInputWaitHandle GetConsoleKeyboardLayoutName GetConsoleNlsMode GetConsoleProcessList GetConsoleSelectionInfo GetConsoleWindow OpenConsole ReadConsoleInputEx SetConsoleCommandHistoryMode SetConsoleCursor SetConsoleDisplayMode SetConsoleFont SetConsoleHardwareState SetConsoleIcon SetConsoleInputExeName SetConsoleKeyShortcuts SetCOnsoleLocalEUDC SetConsoleMaximumWindowSize SetConsoleMenuClose SetConsoleNumberOfCommands SetConsoleNlsMode SetConsolePalette ShowConsoleCursor UnregisterConsoleIME VerifyConsoleHandle