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

[SFML 2] Pobranie pozycji okna

Ostatnio zmodyfikowano 2016-01-06 19:25
Autor Wiadomość
marcolo2307
Temat założony przez niniejszego użytkownika
[SFML 2] Pobranie pozycji okna
» 2016-01-06 00:12:05
Witam!

Potrzebuję dokładnej pozycji okna (włącznie z paskiem tytułowym) na ekranie. Metoda getPosition() zwraca wielkość okna bez paska tytułowego. Czy jest jakiś sposób, aby pobrać pozycję z paskiem/wielkość paska?
P-142936
1aam2am1
» 2016-01-06 00:28:24
Zwraca pozycje lewego górnego rogu paska tytułowego.
P-142940
marcolo2307
Temat założony przez niniejszego użytkownika
» 2016-01-06 00:59:36
Cóż... U mnie zwraca bez paska tytułowego :/ Jest jakiś inny sposób?
P-142942
1aam2am1
» 2016-01-06 01:04:56
Naprawdę powinieneś sobie to sprawdzić jaką funkcją wyświetlającą aktualną pozycje w konsoli.
A tak na serio. To chyba nie. Najwyżej zostaje WinApi ale z niego korzysta przecież sfml więc wyjdzie na to samo.
P-142943
michal11
» 2016-01-06 03:27:49
Krótko: getPosition() zwraca pozycję okna uwzględniając pasek tytułowy(title bar) oraz krawędzie(border) itp. rzeczy.

Żeby to udowodnić trzeba sprawdzić jak to jest realizowane w kodzie tutaj od linijki 267 do 273 mamy implementację funkcji getPosition() na windowsie, widzimy tam użycie funkcji GetWindowRect() z winApi, niestety na stonie Microsoftu nie ma zbyt dokładnych informacji jak ona działa ale na stacku" mamy informację, że w przeciwieństwie do funkcji GetClientRect() funkcja GetWindowRect() zwraca pozycję okna włączając pasek tytułowy(title bar) oraz krawędzie(border) itp. rzeczy.
P-142948
marcolo2307
Temat założony przez niniejszego użytkownika
» 2016-01-06 14:50:51
Ok, a wiecie może gdzie w tym kodzie jest błąd?

CMP = static_cast < sf::Vector2i >( Okno->mapPixelToCoords( sf::Mouse::getPosition() - static_cast < sf::Vector2i >( Okno->getPosition() ), Kamera ) );

Potrzebuję pozycji myszy względem kamery (sf::View). Okno nie jest na full screenie, rozdzielczość jest inna od mojej ekranowej i mam je ustawione na środku. Kiedy klikam myszką, kliknięcie jest odczytywane o wysokość paska tytułowego nad miejscem kliknięcia :/

Kod działa prawidłowo, gdy okno nie ma paska tytułowego.

@Edit:

Poczytałem dokumentację i znalazłem rozwiązanie, poprzez podanie okna do sf::Mouse::getPosition(). Ale i tak funkcja sf::RenderWindow::getPosition() zwraca tylko pozycję wnętrza okna, bez paska.
P-142973
1aam2am1
» 2016-01-06 18:49:40
Jest z paskiem.
Pozycja myszki - pozycja okna = pozycja myszki od lewego górnego rogu paska. Nie wyświetlania.
P-143009
marcolo2307
Temat założony przez niniejszego użytkownika
» 2016-01-06 19:25:45
Faktycznie, mój błąd. Dzięki za pomoc :D
P-143012
« 1 »
  Strona 1 z 1