Wieder mal Consolenprobleme (Win10-Skalierung wie handeln?)

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Wieder mal Consolenprobleme (Win10-Skalierung wie handeln?)

Beitrag von DarkSoul »

Hallo Forum,

ich habe schon wieder Probleme mit der Console.

Und zwar unter Win10 sind die ja nicht mehr fix 80 Zeichen breit, sondern dynamisch skalierbar.

Problem #1:

Code: Alles auswählen

OpenConsole()
ConsoleColor(14,4)
Print("xD")
Repeat : Delay(1000) : ForEver
Schreibt ein gelbes "xD" auf rotem Untergrund. Wenn ich jetzt das Fenster in der Größe verändere, ist plötzlich nicht nur der kleine Bereich hinter "xD", sondern die gesamte Konsole in diesem Rot.

Wie unterbinde ich das? :shock:

Problem #2:
Ich möchte (als Beispiel) eine ganze Reihe "A" und direkt darunter eine ganze Reihe "B" haben. Die nachfolgende Methode hat bis Win8.1 anstandlos funktioniert:

Code: Alles auswählen

OpenConsole()
Print(LSet("", 80, "A"))
Print(LSet("", 80, "B"))
Repeat : Delay(1000) : ForEver
Jetzt versagt auch diese. Wenn ich Print durch PrintN ersetze, habe ich eine leere Zeile zwischen den Reihen. :|

Wie geht das? :D

- PB 5.42 LTS x86
- Win10 x64
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8677
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Wieder mal Consolenprobleme (Win10-Skalierung wie handel

Beitrag von NicTheQuick »

Es fehlt eigentlich sowas wie 'ConsoleWidth()' und 'ConsoleHeight()'. Dann könnte man in Zusammenhang mit 'EnableGraphicalConsole()' sicherlich besser mit arbeiten.

Dein erstes Problem mit dem Rot kannst du vermutlich verhindern, indem du direkt nach dem 'Print()', die Farbe wieder auf Standard stellst.
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Wieder mal Consolenprobleme (Win10-Skalierung wie handel

Beitrag von RSBasic »

@DarkSoul
Du könntest laternativ die Fenstergrößenänderungsmöglichkeit entfernen: http://www.rsbasic.de/aktualisierung/wi ... tfernen.pb
NicTheQuick hat geschrieben:Es fehlt eigentlich sowas wie 'ConsoleWidth()' und 'ConsoleHeight()'.
WinAPI: http://www.rsbasic.de/aktualisierung/wi ... uslesen.pb
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Wieder mal Consolenprobleme (Win10-Skalierung wie handel

Beitrag von edel »

RSBasic hat geschrieben:@DarkSoul
Du könntest laternativ die Fenstergrößenänderungsmöglichkeit entfernen: http://www.rsbasic.de/aktualisierung/wi ... tfernen.pb
Es gibt bestimmt andere Laternativen, diese hier ist eine ganz schlechte ;)
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Wieder mal Consolenprobleme (Win10-Skalierung wie handel

Beitrag von RSBasic »

@edel
Ich weiß, dass das nur ein Workaround von mir war, mir fiel auf die Schnelle nichts besseres ein.

@DarkSoul
Eine andere Alternative:

Code: Alles auswählen

OpenConsole()
ConsoleColor(14, 4)
Print("xD")
ConsoleColor(14, 0)
Print(Chr(160))
Repeat : Delay(1000) : ForEver
Dann bleibt der restliche Hintergrund nach einer Fenstergrößenänderung so.
Du könntest zusätzlich ConsoleLocate() verwenden, um den Cursor vor dem letzten Leerzeichen zu setzen, um nach "xD" weiterschreiben zu können.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Re: Wieder mal Consolenprobleme (Win10-Skalierung wie handel

Beitrag von DarkSoul »

Ich habe dahinter keinen Platz.

Das "echte" Programm hat einen farbigen Header über die volle Breite. Ähnlich dem Beispiel mit den Buchstabenreihen.

Es ist eine nicht grafische Konsole.

@RSBasic: Genau so wie in deinem Snippet war der alte Zustand, der bis Win8.1 klaglos funktioniert hat. Nur eben mit 80 Chars pro Print()

Ich nutze dieselben Header für alle meine Consolenprogramme. Dieselbe Anwendung gibt es auch für MS-DOS (Screenmode 3). Dort bestehen diese Probleme nicht (Unter Win10 x86). Jedoch funktioniert sie nicht auf 64Bit.
Bild
Antworten