[SFML 2] Pobranie pozycji okna
Ostatnio zmodyfikowano 2016-01-06 19:25
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? |
|
1aam2am1 |
» 2016-01-06 00:28:24 Zwraca pozycje lewego górnego rogu paska tytułowego. |
|
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? |
|
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. |
|
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. |
|
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. |
|
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. |
|
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 |
|
« 1 » |