[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:

    4294967064
    

    Was 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.


Anmelden zum Antworten