GetConsoleScreenBufferInfo Problem



  • Hallo wieso wird mir hier immer nur ein und dieselbe Maus Koordinate ausgeben ?

    ( Ja ich bewege die Maus auch im Consolen Fenster )

    CONSOLE_SCREEN_BUFFER_INFO inf;
    HWND hwnd = FindWindow("ConsoleWindowClass",NULL);
    
    while(1)
    {
    
    system("CLS");
    
    Sleep(1);
    
     GetConsoleScreenBufferInfo ( hwnd  , &inf );
    
            cout<<inf.dwCursorPosition.Y<<endl;
            cout<<inf.dwCursorPosition.X<<endl;
    }
    


  • was du da ermittlest sind nicht die Mauskoordinaten. Die bekommt man mit GetCursorPos(); du ermittelst die position des konsolencursors.

    Beispiel um die Position deines Mauszeigers zu ermitteln:

    POINT p;
    GetCursorPos(&p);
    
    int x=p.x;
    int y=p.y;
    

    was du mit deinem code ermittelst ist die Position, wohin die nächste ausgabe geschrieben wird, ähnlich wie in einem textdokument.

    lg,
    andi01.



  • Ich will aber nur die Koordinaten aus dem Konsolen Fenster haben wie kann ich die kriegen ?



  • mit ScreenToClient():

    Codebeispiel:

    POINT p;
    GetCursorPos(&p);
    
    ScreenToClient(hwnd_fenster, &p);
    
    int x=p.x;
    int y=p.y;
    

    alternativ könntest du dir auch einfach die abmessungen des fensters besorgen und umrechnen:

    HWND hwnd;//hwnd deines fensters
    
    RECT r;
    GetClientRect(hwnd, &r);
    
    POINT p;
    GetCursorPos(&p);
    
    int x=p.x-r.left;
    int y=p.y-r.top;
    

    lg,
    andi01.


Anmelden zum Antworten