[WinAPI][SFML] Zdarzenia.
Ostatnio zmodyfikowano 2011-10-31 20:03
blojayble Temat założony przez niniejszego użytkownika |
[WinAPI][SFML] Zdarzenia. » 2011-10-31 19:46:00 Witam.
W jednym z moich programów chciałem połączyć SFML z WinAPI, ale natknąłem się na problem. Otóż nie wiem w jaki sposób mam korzystać z wydarzeń (sf::Event).
Wszelkie próby spełzły na niczym, gdziekolwiek bym nie umieścił GetEvent().
Korzystam z tego kodu:
http://www.sfml-dev.org/tutorials/1.6/graphics-win32.php
Wydaje mi się że to nie działa dlatego iż SFMLView jest w hierarchii pod Window, więc to on wszystko zgarnia.
Macie jakiś sposób, czy też pomysł, jak zrealizować to tak, aby można było w miarę normalnie korzystać z wydarzeń?
Dziękuję za wszystkie odpowiedzi.
Pozdrawiam. |
|
akwes |
» 2011-10-31 19:49:51 Może dlatego że Event odczytuje się w pętli while :P ? while( okno.IsOpened() ) { while( okno.GetEvent( zdarzenie ) ) { SendToALLObjectWhoWhantEvent( zdarzenie ); } okno.Clear( sf::Color( 255, 240, 240 ) ); okno.Display(); }
Po wyjściu z pętli event jest ... em, pusty :P |
|
blojayble Temat założony przez niniejszego użytkownika |
» 2011-10-31 20:03:05 Heh, no a niby jak miałem odczytywać? Nie pisałem tego, bo chyba oczywiste. :P Sęk w tym, że to nie działa. Podam fragment kodu. sf::Event Event; MSG Message;
bool lol = false;
Message.message = static_cast < UINT >( ~WM_QUIT ); while( Message.message != WM_QUIT ) { if( PeekMessage( & Message, NULL, 0, 0, PM_REMOVE ) ) { TranslateMessage( & Message ); DispatchMessage( & Message ); } else { while( SFMLView.GetEvent( Event ) ) { if( Event.Type == sf::Event::KeyPressed && Event.Key.Code == sf::Key::A ) lol = true; } SFMLView.Clear( sf::Color::Yellow ); if( lol == true ) SFMLView.Draw( sf::Shape::Circle( 30, 30, 30, sf::Color::Blue ) ); SFMLView.Draw( sf::Shape::Circle( 20, 20, 30, sf::Color::Cyan ) ); SFMLView.Display(); } } |
|
« 1 » |