Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++, WinAPI] Odczytywanie pozycji kursora w konsoli

Ostatnio zmodyfikowano 2013-04-27 22:19
Autor Wiadomość
Canar
Temat założony przez niniejszego użytkownika
[C++, WinAPI] Odczytywanie pozycji kursora w konsoli
» 2013-04-27 21:55:20
Witam serdecznie!

Piszę program, w którym wykorzystać chcę funkcję, która zwracać będzie pozycję kursora.

Np, na pozycji 0, 0 wypisuje tekst: "Cos", i liczę, ze funkcja zwróci mi x, y = 4, 0.

Napisałem takie coś:

funkcja:

C/C++
void pozycja_kursora( unsigned & x, unsigned & y )
{
    POINT pozycja;
   
    GetPhysicalCursorPos( & pozycja );
   
    x = static_cast < unsigned >( pozycja.x );
    y = static_cast < unsigned >( pozycja.y );
}

main:

C/C++
int main( void )
{
    unsigned poziom, pion;
   
    pozycja_kursora( poziom, pion );
    cout << poziom << "-" << pion << endl;
   
    pozycja_kursora( poziom, pion );
    cout << poziom << "-" << pion << endl;
   
    pozycja_kursora( poziom, pion );
    cout << poziom << "-" << pion << endl;
   
    _getch();
    return 0;
}

W mainie używam funkcji kilkakrotnie, wszędzie pokazuje mi te same dane, które po każdym skompilowaniu w każdej linijce są takie same, np:

305-1125
305-1125
305-1125

Szukałem rozwiązania mojego problemu, ale teoretycznie problemu powinno nie być, chyba że coś przeoczyłem, dlatego proszę o pomoc.

Pozdrawiam,
Canar
P-81316
pekfos
» 2013-04-27 21:57:41
A wiesz w ogóle, co robi funkcja, której użyłeś? Trochę wątpię..
Powinno być GetConsoleCursorPosition()
P-81318
Canar
Temat założony przez niniejszego użytkownika
» 2013-04-27 22:04:26
Szukając funkcji, która by spełniła moje oczekiwania, na pewnej stronie znalazłem takową z użyciem właśnie tego co w mojej się znalazło.

Dziękuję za pomoc i szybką odpowiedź.

Error: identifier "GetConsoleCursorPosition" is undefned

Na msdn nie ma info o tym, może powinno to jakoś inaczej wyglądać?
P-81319
pekfos
» 2013-04-27 22:14:03
Mój błąd, jest tylko SetConsoleCursorPosition(), a Get już nie ma. Trzeba użyć funkcji GetConsoleScreenBufferInfo():
http://msdn.microsoft.com/en-us/library/windows/desktop/ms683171%28v=vs.85%29.aspx
P-81320
Canar
Temat założony przez niniejszego użytkownika
» 2013-04-27 22:19:42
Pięknie dziękuję,

biorę się do wprowadzania zmian (i poczytania o tym) :)
P-81321
« 1 »
  Strona 1 z 1