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

[SFML 2.0] Niestandardowe komunikaty z okna

Ostatnio zmodyfikowano 2013-01-29 08:21
Autor Wiadomość
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"
C/C++
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?
P-75171
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:
C/C++
void WindowImplWin32::processEvent( UINT message, WPARAM wParam, LPARAM lParam )
P-75182
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:
C/C++
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ą.
P-75183
DejaVu
» 2013-01-27 23:09:38
Dałeś linka przecież do dokumentacji, w której jest opisane znaczenie argumentów...
P-75184
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).
P-75197
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.
P-75275
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 ;)
P-75276
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?
P-75277
« 1 » 2
  Strona 1 z 2 Następna strona