Schriftgröße/Art der Konsole ändern?
-
Hallo!
Ich hab jetzt ein Konsolenspiel programmiert. Aber dieses kleine schwarze Fenster ist ja ziemlich langweilig.
Ich hab Sounds, farbige Texte und ich weiß, wie man die Fenstergröße ändert und noch ein paar Dinge.
Aber ich hab nirgens gefunden, wie man die Schriftgröße ändert. Das wäre total cool, so kann man endlich mal alles erkennen und es würde viel besser aussehen
Bis jetzt geht das bei mir ja nur per Rechtsklick Titelseite - Eigenschaften - Schriftart - und da dann 10x18.
Wie geht das mit der winAPI oder sonst wie?
Bei dieser Konsolenfunktionssammlung (Konsolenfunktionen) hab ich nichts gefunden (wobei das auch auf Englisch alles ist :()Danke schonmal!
-
SetCurrentConsoleFontEx sieht gut aus.
http://msdn.microsoft.com/en-us/library/ms686200(v=vs.85).aspx
-
Okay und wie benutze ich das jetzt um meine Schriftgröße zu ändern? Die Funktion hab ich auch schon gefunden, aber da kann man ja nur die Schriftart ändern, die Größe ist mir aber viel wichtiger..?
Danke für die Antwort^^
-
Ich hab jetzt nochmal weitergeforscht und gesehen, wie jmd mit dieser Funktion die Schriftgröße ändern wollte.
http://www.c-plusplus.net/forum/248030
#include <windows.h> #include <iostream> using namespace std; PCONSOLE_FONT_INFOEX testFont; int main() { HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);; testFont->dwFontSize.X = 10; testFont->dwFontSize.Y = 20; SetCurrentConsoleFontEx(hOut, TRUE, testFont); cout<<"Hello World"<<endl; cin.get(); return 0; }
Ich hab die selbe Fehlermeldung wie er, und ich hab Windows 7 und alles so gemacht, wie es beschrieben wurde, wieso geht das nicht?
-
Ich habe huer nur XP x64 und kann es nicht ausprobieren, aber versuch mal
#define _WIN32_WINNT 0x601
oben hinzuschreiben.
-
Hab ich gemacht:
C:\Users\Yannik\Desktop\C++\programme\Neu\all.cpp|8573|warning: "_WIN32_WINNT" redefined|
c:\mingw\bin\..\lib\gcc\mingw32\4.3.3\..\..\..\..\include\windef.h|20|warning: this is the location of the previous definition|
C:\Users\Yannik\Desktop\C++\programme\Neu\all.cpp|8575|error: 'PCONSOLE_FONT_INFOEX' does not name a type|
C:\Users\Yannik\Desktop\C++\programme\Neu\all.cpp||In function 'int main()':|
C:\Users\Yannik\Desktop\C++\programme\Neu\all.cpp|8580|error: 'testFont' was not declared in this scope|
C:\Users\Yannik\Desktop\C++\programme\Neu\all.cpp|8583|error: 'SetCurrentConsoleFontEx' was not declared in this scope|
||=== Build finished: 3 errors, 2 warnings ===|Und noch mal zum Verständnis, windef.h Zeile 20:
#ifndef WINVER #define WINVER 0x0400 /* * If you need Win32 API features newer the Win95 and WinNT then you must * define WINVER before including windows.h or any other method of including * the windef.h header. */ #endif #ifndef _WIN32_WINNT #define _WIN32_WINNT WINVER
Ich habs dann in der Header nochmal auf 0x601 gesetzt, immer noch Fehler von wegen not declared.
-
Incocnito schrieb:
Ich habs dann in der Header nochmal auf 0x601 gesetzt, immer noch Fehler von wegen not declared.
Nee! Nie in Windows-Headern was ändern! Ich meinte eigentlich, dass du die Zeile ganz oben hin setzt, noch vor dem Einbinden von windows.h. Dann sollte eigentlich keine Warnung von wegen Redefinition kommen. Ob's jetzt was bringt, weiß ich nicht. War mehr geraten, aber probier mal.
-
Jo, kommt jetzt (logischerweise) keine Warnung wegen redifinition mehr, geht trotzdem nicht (not declared).
Und das abändern war eben nur so, mach ich sonst eh nicht^^Sonst noch irgendeine Idee? Vielleicht gibts ja noch eine andere Funktion/Möglichkeit?
-
Wär die IC nicht was für dich?
-
Ich hab die schon durchforstet, da steht nix von wegen Schriftgröße.
Alles was da steht konnte ich bereits ergoogeln, aber diese blöde Schriftgröße will einfach nicht
Oder hab ich da was übersehen?* Get/Set für Farben (Textfarbe und Hintergrundfarbe - getrennt oder gemeinsam) [Conio-Äquivalente: textcolor()/bgcolor()]
* Get/Set für Cursor (Position und Größe) [Conio-Äquivalent: gotoxy()]
* Get/Set für Fenster (Position und Größe)
* Get für maximale Fenstergröße
* Get/Set für FenstertitelDa steht nichts von wegen Schriftgröße
-
Ok, sorry. Ich weiß gar nicht genau, was die IC alles kann. Ich dachte, die würde sowas vielleicht mit abdecken. Mir gehen langsam die Ideen aus...
-
Hilfts weiter, wenn ich sage, dass ich bereits schon alles vor ein paar Wochen ausprobiert hab was wir gerade getestet haben?
Ich hab gegoogelt und weitergesucht, nirgends was gefunden. Tja, dann gibt's wohl einfach keine Lösungen
Schon schade eigentlich.. Wenn man sich da diese Konsolenfunktionsliste ansieht, gibt's echt für jeden Kram eine Funktion, nur für die Schriftgröße nicht?
Das ist eigentlich schon recht komisch.. Ich glaube, wir übersehen da irgendwasTrotzdem danke für die Hilfe^^
-
Hab noch was gefunden:
http://blogs.microsoft.co.il/blogs/pavely/archive/2009/07/23/changing-console-fonts.aspx
Kennst du das auch schon?
-
Oh, cool!
Der hatte ja die selben Probleme wie wir^^
Aber ich hab jetzt Null Ahnung, wie man diese Funktionen jetzt benutzt (da steht ja was von wegen static void main und var fonts) und von winAPI hab ich eigentlich keinen Schimmer, ich bin froh wenn das kopierte funktioniert.
Und außerdem wird da ja auch nicht gezeigt, wie man das wichtigste, nämlich die Schriftgröße, abändert. Findest du dazu auch noch was? Ich nicht
Und wenn ja, wie benutzt man das dann?
-
Hm, dann kann man die wohl einfach nicht ändern. Das ist Schade.. naja, egal.
-
Schau dir mal die IDE Quincy an und da die Beispiele:
http://www.codecutter.net/tools/quincy/Hab es nicht probiert, denke aber das man da auch einen neueren Compiler darunter bekommt - im Zweifel gibt es da den Quelltext
MfG f.-th.
-
Was soll ich denn da probieren? Das mit conio2 oder was?
-
Falls wer die Lösung will, braucht man doch nur schritt für schritt denken.
Alle Aufrufe den Rückgabewert prüfen, und schon fällt einen auf, das schon der GET Aufruf nicht funzt. Mal schnell hier:
http://msdn.microsoft.com/en-us/library/ms683177%28VS.85%29.aspx
geschaut, und schon sieht man unten die Notiz:This function needs the cbSize element of the CONSOLE_FONT_INFOEX structure defined (not a surprise but not mentioned in the dcumentation) otherwise it returns an error
Also Leute, hier der Code:
HANDLE outcon = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_FONT_INFOEX font; font.cbSize=sizeof(CONSOLE_FONT_INFOEX); GetCurrentConsoleFontEx(outcon, false, &font); font.dwFontSize.X = 4; font.dwFontSize.Y = 4; SetCurrentConsoleFontEx(outcon, false, &font);
War das jetzt so schwer?
Euer genervter Gott
-
Hier mal eine Variante für ein wenig ältere Systeme:
http://www.c-plusplus.net/forum/p761155
Auf W2k funktioniert der Code, Microsoft schreibt in der MSDN ab XP und in den Code-Guards Win 5.00Der Code vom genervten ... läuft z.B. noch nicht auf meinem gcc 4.4.1 -
Microsoft funktioniert natürlich laut MSDN ab Vista.MfG f.-th.
-
Ja, so hats funktioniert wie es da steht, danke!