[ERLEDIGT] Maximale X - Cursorposition bei Konsole ermitteln funzt nicht ...
-
Hallo,
ich habe mir eine kleine Klasse für einfache Grafikausgaben unter der Win32 Konsole geschrieben, und dabei u.A. folgende Funktion zur Ermittlung der maximalen X - Cursorposition implementiert, die jedoch einen viel zu hohen Wert zurückliefert:
Deklaration des typedefs und der CSBI Struktur:
class ConsoleGraphics { private: //... typedef unsigned int UINT; CONSOLE_SCREEN_BUFFER_INFO CSBI; }Und nun die Definition der fehlerhaften Funktion:
UINT ConsoleGraphics :: GetConsoleCursorPosX () const { return CSBI.dwCursorPosition.X; }Sobald ich mir den Returnwert dieser Funktion ansehe, kommt dabei folgender Wert raus, obwohl der Cursor auf x = 0 steht:
4294967064Was habe ich falsch gemacht ??
Danke schonmal im Voraus,
MfG mikey.
-
mikey schrieb:
Was habe ich falsch gemacht ??
Zuwenig Code. Prüfe mal ob "CSBI" korrekt initialisiert ist wenn "ConsoleGraphics::GetConsoleCursorPosX ()" aufgerufen wird.
mikey schrieb:
4294967064
Der Datentyp von "CSBI.dwCursorPosition.X" ist ein "short" -> X = -232.
-
Ich tippe auch ganz stark darauf, dass CSBI noch nicht initialisiert wurde. In GetConsoleCursorPosX() fehlt eindeutig eine Zuweisung dieser Art:
CSBI = GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE));MfG SideWinder
-
Hi,
Zuwenig Code. Prüfe mal ob "CSBI" korrekt initialisiert ist wenn "ConsoleGraphics::GetConsoleCursorPosX ()" aufgerufen wird.
Ohje, danke hab's gerade gecheckt ... Ich habe die CONSOLE_SCREEN_BUFFER_INFO Struktur tatsächlich nicht mit dem Handle der Konsole initialisiert, sondern nur deklariert. Folglich war die Struktur auch 'etwas' leer

Danke für beide Hinweise, nun returnt meine Funktion auch nur noch einen short Wert, somit dürften alle Schwierigkeiten aus dem Weg geräumt sein ...
EDIT:
Ich tippe auch ganz stark darauf, dass CSBI noch nicht initialisiert wurde. In GetConsoleCursorPosX() fehlt eindeutig eine Zuweisung dieser Art:
Jop, genau das war's, danke an euch beide

MfG mikey.