Usunięcie wiadomości z kolejki WinApi

0

Witam,
moja wiedza dot. WinApi jest jeszcze dość płytka i ciągle się go uczę, jednak zacząłem już pisać pewną aplikację i zacząłem się zastanawiać nad jedną dość istotną dla mnie kwestią, więc jeśli jest taka możliwość proszę o pomoc w niżej przedstawionym problemie.
Otóż załóżmy, że mam w okienku kilka przycisków. Gdy użytkownik naciśnie jeden z nich zostanie wysłana wiadomość do kolejki wiadomości o zaistniałym zdarzeniu. W konsekwencji, program uruchomi procedurę okna, której celem będzie przetwarzanie pewnych danych, których może być bardzo dużo. W związku z powyższym może to potrwać nawet kilka minut. Problem jest taki, że w tym czasie użytkownik może (celowo lub nie) ponownie nacisnąć ten sam lub inny przycisk, co spowoduje ponowne wysłanie wiadomości do kolejki i uruchomienie procedury dwukrotnie. Natomiast ja chciałbym, żeby do czasu zakończenia przetwarzania danych "zablokować" taką możliwość.
W końcu jak naciśniemy przycisk to wiadomość o tym zdarzeniu idzie do systemu i czeka sobie w kolejce. Jeśli naciśniemy drugi raz przycisk to będą dwie wiadomości w kolejce więc po jednym przetwarzaniu danych zostanie uruchomiony ten sam proces po raz wtóry...
Chodzi mi o to, by tą drugą wiadomość wywalić z kolejki lub uniemożliwić pojawienie się jej.
Więc moje pytanie brzmi jak tego dokonać?
Z góry dziękuję za pomoc!

1

Zamiast grzebać w kolejce komunikatów, po wciśnięciu przycisku "wyłącz go" (Enabled=false) więc ponowne naciśnięcie nie zadziała.

1

program uruchomi procedurę okna, której celem będzie przetwarzanie pewnych danych, których może być bardzo dużo. W związku z powyższym może to potrwać nawet kilka minut
Mam nadzieję że robisz to w osobnym wątku, bo jeśli nie, to po kilku sekundach Windows zrobi twoje okienko na szaro z opisem "nie odpowiada", użytkownik się wkurzy i ubije aplikację ;-)

0
_13th_Dragon napisał(a):

Zamiast grzebać w kolejce komunikatów, po wciśnięciu przycisku "wyłącz go" (Enabled=false) więc ponowne naciśnięcie nie zadziała.

Hmm, też to rozważałem, ale jak jest większa liczba przycisków w oknie to każdy trzeba będzie wyłączyć... Ale fakt, jest to dobre rozwiązanie, więc dzięki.

Azarien napisał(a):

Mam nadzieję że robisz to w osobnym wątku, bo jeśli nie, to po kilku sekundach Windows zrobi twoje okienko na szaro z opisem "nie odpowiada", użytkownik się wkurzy i ubije aplikację ;-)

Słuszna uwaga! Z wątkami jeszcze do czynienia nie miałem, ale poczytałem trochę o nich więc to rzeczywiście dobry pomysł :). Dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1