[SFML 2.X] Tworzenie okienek w SFML
Ostatnio zmodyfikowano 2026-04-07 20:30
tBane Temat założony przez niniejszego użytkownika |
[SFML 2.X] Tworzenie okienek w SFML » 2025-10-04 10:28:54 Witam. Czy to dobry sposób na programowanie okienek w SFML? Czy jest jakiś lepszy sposób? Bo standardowo w Windowsie gdy tworzy się nowe okienko to ma ono osobną instację i zastanawiam się czy nie da się tak zrobić w SFML. Może poprzez sf::RenderWindow? Pytanie stąd, bo zastanawiam się czy dodać opcję minimalizacji okien w mojej apce i chciałbym to porządnie zrobić ... :-) #pragma once #include "ElementGUI/ElementGUI.hpp" #include "ElementGUI/Button.hpp"
enum class DialogState { Idle, ToClose };
class Dialog : public ElementGUI { public: sf::Vector2f _position; sf::RectangleShape _dialog_rect; sf::RectangleShape _title_rect; sf::Text _title_text; sf::RectangleShape _content_rect; NormalButton * _close_btn; DialogState _state; bool _is_moved; sf::Vector2f _offset; Dialog( std::wstring title, sf::Vector2f size, sf::Vector2f position = sf::Vector2f( - 1, - 1 ) ); virtual ~Dialog(); sf::Vector2f getPosition(); void setSize( sf::Vector2f size ); sf::Vector2f getSize(); virtual void setPosition( sf::Vector2f position ); virtual void cursorHover(); virtual void handleEvent( sf::Event & event ); virtual void update(); virtual void draw(); };
extern std::vector < Dialog * > dialogs;
|
|
skovv |
» 2025-10-04 15:33:22 Ale to są zwykle okna rysowane "po swojemu" w oknie programu tak? Jeśli tak to napisz jak chcesz aby działało, jeśli chcesz zrobić prawdziwe okna to będzie dużo roboty z dzieleniem zasobów itp |
|
tBane Temat założony przez niniejszego użytkownika |
» 2025-10-05 08:19:06 Tak. Obecnie mam okienka rysowane w programie. Ale chciałbym to profesjonalnie zrobić. Tylko nie wiem jak by to miało wyglądać. Dlatego piszę tutaj na forum. Jak Wy byście zaprogramowali okienka w programie w SFML?  |
|
skovv |
» 2025-10-05 10:32:35 Aby wyglądało profesjonalnie nie musisz używac oryginalnych windowsowych okienek(szczegolnie kiedy sfml nie lubi wielu okien), wystarczy ladnie rysowac okienka w swoim programie i napisac dobry/prosty system ich obslugi by nie kolidowal z innymi oknami i tym co jest pod nimi |
|
tBane Temat założony przez niniejszego użytkownika |
» 2026-04-03 14:42:52 Migrowałem na nowszego SFML 3.0.2 i próbowałem zrobić okienka za pomocą sf::RenderWindow jednak nie można nimi zarządzać. Nie da się ustawiać kolejności wyświetlania okien tzn. żeby np. okno "Confirm Window" (okienko z dwoma opcjami confirm/cancel) było nad głównym oknem aplikacji. Można między nimi przeskakiwać. Dlatego opcja odpada. Może w kolejnym SFML to zrobią... :-/ |
|
nanoant20 |
» 2026-04-04 16:18:21 Może w kolejnym SFML to zrobią... :-/ SFML nie daje i nie dawało kontroli okien, nie jest biblioteką do budowania GUI. To co chcesz osiągnąć i o czym piszesz to tzw. "okno modalne", trzeba by kombinować z systemowym WinAPI lub Dear ImGui with SFML. Twoje pseudo-modalne okno w jednym RenderWindow to najprostsze i najlepsze rozwiązanie. |
|
tBane Temat założony przez niniejszego użytkownika |
» 2026-04-04 18:23:26 Wystarczyła by funkcja do ustawiania okna aktywnym. Wtedy można by ręcznie przetwarzać okna i nimi zarządzać. |
|
nanoant20 |
» 2026-04-04 22:09:32 Wystarczyła by funkcja do ustawiania okna aktywnym. a czy podjąłeś próbę z pobieraniem pozycji kursora względem każdego okna (sf::Mouse::getPosition(window)). Sprawdzasz, czy kursor znajduje się wewnątrz granic okna, jeżeli tak to to okno jest aktywne. Lub czy sprawdzałeś z typami zdarzeń (event'ami) sf::Event::GainedFocus i sf::Event::LostFocus nie wiem czy są w wersji SFML 3.x |
|
| « 1 » 2 |