Admixior Temat założony przez niniejszego użytkownika |
[SFML 2.0] Niestandardowe komunikaty z okna » 2013-01-27 20:55:49 Witam, Niedawno pisałem o WSAAsyncSelect(), teraz sprawdzam jak odebrać komunikat z okna o niestandardowym id, żeby sobie go przetworzyć tak jak ja chce. O co mi chodzi z tym niestandardowym id? Chodzi o to że klasa sf::Event zapisuje sobie tylko dane tylko dotyczące tego co ma w "enum" enum EventType { Closed, Resized, LostFocus, GainedFocus, TextEntered, KeyPressed, KeyReleased, MouseWheelMoved, MouseButtonPressed, MouseButtonReleased, MouseMoved, MouseEntered, MouseLeft, JoystickButtonPressed, JoystickButtonReleased, JoystickMoved, JoystickConnected, JoystickDisconnected, Count }
Natomiast ja bym chciał sobie odczytać własne numery komunikatów (lParam i wParam). Robił ktoś kiedyś coś takiego? |
|
DejaVu |
» 2013-01-27 22:36:04 Ze źródeł SFML-a wynika, że nie przechwycisz żadnego event-a bez modyfikowania źródeł biblioteki SFML, a co więcej: utracisz przenośność kodu. Patrz implementacja metody: void WindowImplWin32::processEvent( UINT message, WPARAM wParam, LPARAM lParam )
|
|
Admixior Temat założony przez niniejszego użytkownika |
» 2013-01-27 22:53:49 Na to czekałem (na potwierdzenie że nie ma czegoś takiego) a co do przenośności to obmyśliłem w zanadrzu sposób. Nie jestem jeszcze pewien w 100% do działanie tego: sf::Window * newb =& app_window; HWND hwin = newb->getSystemHandle();
i wykorzystać funkcje PeekMessage(...), tylko jak by ktoś oświecił czy 2 parametry FilterMin i Max chodzi o wParam czy o coś innego nie związanego z tym treścią komunikatu? Ewentualnie jaki podać ostatni parametr żeby na pewno otrzymywać moje numery komunikatów. A pozostałe obsłuży biblioteka sfml. Mówiąc w skrócie nie mogę zrozumieć które parametry co oznaczają. |
|
DejaVu |
» 2013-01-27 23:09:38 Dałeś linka przecież do dokumentacji, w której jest opisane znaczenie argumentów... |
|
Mrovqa |
» 2013-01-28 07:39:42 @Admixior, jeżeli nie zależy Ci na przenośności na inne platformy to okno możesz utworzyć normalnie w WinAPI i wtedy masz standardową pętle komunikatów. Przecież nawet przykład jest załączony do źródeł SFMLa jak to zrobić... (i to nie tylko do WinAPI). |
|
Admixior Temat założony przez niniejszego użytkownika |
» 2013-01-28 22:25:15 Tak się zastanawiam co będzie lepsze w użyciu, czy użycie hooków czy tej funkcji. Jak użyje tej funkcji tej jest mały moment deadu tuż po wywołaniu funkcji PeekMessage(...) do zakończenia pętli pobierania zdarzeń przez sfml. Jeśli w tym czasie przyjdzie jakiś komunikat od winsocka to przepadł - pętla z sfml zabierze go i usunie, a to jest nie dopuszczalne - mój program nie przewiduje tego bo działa na tcp/ip. Co do przenośności kodu na inne platformy i tak, i tak będzie trudno bo linux nie ma przecież winsock. |
|
m4tx |
» 2013-01-28 22:29:12 Co do przenośności kodu na inne platformy i tak, i tak będzie trudno bo linux nie ma przecież winsock. |
Ma, tylko bez "win" w nazwie ;) |
|
Admixior Temat założony przez niniejszego użytkownika |
» 2013-01-28 22:42:45 Faktycznie są niewielkie zmiany close() zamiast closesocket() nie ma WSAStarup() Więc takie pytanie, czy hooki też są na linuxie w prawie podobny sposób? |
|
« 1 » 2 |