Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

25.05.2008, 15:27

Konsole Maximieren in Visual Studio 2008 (c++) *solved :)*

Hi alle!

Wie schon im Titel erwähnt habe ich eine Frage zur Maximierung der
Konsole in Visual Studio 2008.

Das grundsätzliche Maximieren ist mir klar (hoffe ich)

Quellcode

1
2
3
4
5
HWND hWnd;
COORD screenbuffer;

hWnd = GetConsoleWindow();
SetConsoleDisplayMode(hStdOut,CONSOLE_FULLSCREEN_MODE,&screenbuffer);


So nun hab ich aber im maximierten Fenster (Vollbild) 80 * 50 Zeichen :/
Ich hätte aber gerne 80 * 25 Zeichen (also 80 in x Richtung und 25 in y)

Als ich vor langer Zeit noch im alten Borland Compiler gearbeitet habe
gab es einen Befeh dafür der wie folgt hieß:

Quellcode

1
 textmode(C80);


Gibt es so etwas in Visual Studio auch? Bzw. kann man grundsätzlich
die Anzeige größe verändern?

Noch zur Info Befehle wie:

Quellcode

1
2
SetConsoleScreenBufferInfo();
SetConsoleScreenBufferSize(); usw.


habe ich in der MSDN schon gefunden, aber irgentwie komm ich mit
dennen nicht weiter bzw. hab keine Ahnung wie ich sie richtig einsetze.
Also wenn mich jemand auf diese Befehle verweißt bitte so freundlich sein und mir konkret ein Code-Beispiel für 80 * 25 Zeichen zu zeigen Smile

Vielen Dank bereits im Voraus!
mfg Exigo

Anonymous

unregistriert

2

25.05.2008, 17:12

Quellcode

1
2
COORD newScreenBufferDimensions;
SetConsoleDisplayMode(hConsoleOutput,CONSOLE_FULLSCREEN_MODE,&newScreenBufferDimensions);

3

25.05.2008, 20:01

mhm

Mhm das hab ich doch schon oben stehen^^

wenn ich jetzt screenbuffer setze:

Quellcode

1
2
3
4
5
COORD screenbuffer;
screenbuffer.X=80;
screenbuffer.Y=25;

SetConsoleDisplayMode(hStdOut,CONSOLE_FULLSCREEN_MODE,&screenbuffer);


Dann bewirkt das absolut gar nichts oO!
selbst wenn ich es auf 1 : 1 setze ändert sich an meiner Ausgabe nichts!

Anonymous

unregistriert

4

25.05.2008, 20:03

ScreenBuffer nicht ändern :)

5

25.05.2008, 20:55

Also gibts keine Lösung?^^

Nichts ändern ist keine Alternative zu dem was ich mache.
Hatte vor Langer Zeit mal ein Text basiertes RPG für DOS gemacht,
allerding alles für die "Auflösung" von 80 * 25 Zeichen.

Nun wollte ich das ganze mal wieder aufgreifen und weiter entwickeln allerdings macht sich das ganze gar nicht gut wenn die unter hälfte des Bildschirms schwarz ist.... (zeile 26-50)

Also wenn noch jemand ne Idee hat bitte melden :)

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

6

25.05.2008, 21:24

Schau mal unter Tutorials "Windows Konsole". Dachte, dass ich da auch mal was mit Konsole vergrössern gesehen habe..

7

26.05.2008, 11:01

mhm Dankeschön!

Ist aber leider blos eine andere Variante für (mit Tastensimulation)
die Maximierung.
Allerdings stimmt dann die Zeilenanzahl wieder nicht...

mfg Exigo

Sheddex

unregistriert

8

26.05.2008, 16:44

Die Aufgabe der COORD Variable die du an SetConsoleDisplayMode übergibst ist die aktuell eingestellt Größe zurückzugeben, nicht jedoch etwas zu ändern.

Die richtige Funktion ist also, wie du schon oben erwähnt hast, SetConsoleScreenBufferSize. Bei dir hat sie nichts bewirkt, da du GetConsoleWindow verwendest, richtig ist jedoch GetStdHandle(STD_OUTPUT_HANDLE).

Jetzt muss ich dir die Hoffnung jedoch leider trotzdem nehmen:
Im Fenstermodus erscheinen Scrollbalken, sobald die Buffergröße verändert wird, im Vollbild passiert nichts.

Vielleicht gibt es doch irgendeine Möglichkeit, ich jedoch weiß nichts davon. Man muss dazu auch sagen dass die Konsole nicht wirklich für Spiele gedacht ist. Du musst dich mit ihren Eigenarten wohl abfinden...

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

9

26.05.2008, 17:35

doch es geht schon einiges :D

1. buffergröße und fenstergröße einstellen(:

C-/C++-Quelltext

1
2
3
4
5
SMALL_RECT r = {0,0,width,height};
SetConsoleWindowInfo(m_hStdOut,TRUE,&r);

COORD coord = {width,height};
SetConsoleScreenBufferSize(m_hStdOut,coord);


die WindowSize (SetCOnsoleWindowInfo) hab ich imma eins kleiner als Buffergröße.

2. Fullscreen wechseln

wenn man den buffer so einstellt, dann sieht man auch im fenstermodus keine rollbalken!

10

26.05.2008, 18:48

DANKEEEEE!!

Wow vielen Dank TrommlBomml :D

das ist genau das was ich brauche!

Die Buffergröße bleibt dann auch im Vollbild erhalten :)

Danke nochmal an alle!

mfg Exigo

Werbeanzeige