Autor Wątek: Problem z WM_LBUTTONUP  (Przeczytany 780 razy)

Offline Jam_Pawian

  • Użytkownik

# Maj 27, 2009, 14:01:40
Witam

Mam problem z obsługą kliknięć za pomocą komunikatów windowsowych.
Chciałbym, aby po otrzymaniu komunikatu 'WM_LBUTTONUP' wywołała się funkcja:

void CSwiat::Rysuj_strzalke()
{
if(l_strzalki < 20)
{
Strzalki_stan[l_strzalki]= 1; //1 oznacza, że strzałka znajdująca się w Strzalki[l_strzalki] ma być narysowana
Strzalki[l_strzalki]->Zmien_pozycje(myszka->Zwroc_X()-400, -5, myszka->Zwroc_Y()-310);
l_strzalki++;
}
else
{
PostQuitMessage(0);
}

}

Zmienia ona wartości w tablicy Strzalki_stan[20], a na jej podstawie w każdej klatce rysowane są strzałki.

Problem w tym, że Windows jak gdyby dostawał kilka komunikatów na każde kliknięcie i wywoływał tę funkcję wiele razy.



Proszę o pomoc i z góry dziękuję

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline progX

  • Użytkownik

# Maj 29, 2009, 16:55:01
Hmm A co masz w pętli komunikatów ;D

Offline Jam_Pawian

  • Użytkownik

# Maj 30, 2009, 13:30:34
Jeśli chodzi o myszkę to niewiele:
case WM_LBUTTONUP:
{
swiat->Rysuj_strzalke();
}

 :)

Narazie to rozwiązałem tak, że wywołuję Rysuj_strzalke tylko, gdy pozycja myszy się zmieni względem poprzedniej. Trochę to mało eleganckie, ale puki co działa...

Offline Reg

  • Administrator
    • Adam Sawicki - Home Page

# Maj 30, 2009, 14:30:36
Jedyne co mi przychodzi do głowy to prosty błąd językowy, że może w swoim switch-u kodu po kolejnych case nie kończysz instrukcją break i wykonanie wchodzi o następnych case-ów (bo tak jest w C++).

Offline Jam_Pawian

  • Użytkownik

# Maj 31, 2009, 00:05:02
Nie no, cienki jestem jeszcze jeśli chodzi o technologie używane w tworzeniu gier, ale C++ znam nieźle i jakbym zrobił takiego byka, to bym się tu ze wstydu spalił :)

Dzięki za sugestie, ale ja ten problem narazie sobie odpuszczam, bo jak napisałem znalazłem rozwiązanie mało eleganckie, ale wystarczające dla tego, co teraz robię.

Offline master18

  • Użytkownik

# Czerwiec 02, 2009, 08:15:38
Można skorzystać z programu spy++ załączonego do visual studio, wiele razy mi pomógł jeżeli chodzi o komunikaty jakie są wysyłane do naszego okna.