Obsługując zdarzenie aplikacja może zwrócić do nadawcy (systemu lub innego procesu) liczbę, która będzie jakoś zinterpretowana w zależności od rodzaju zdarzenia. Może to być na przykład odpowiedź, czy udało się zainicjować zmienne, albo czy jest zgoda na zamknięcie systemu.

Można też definiować własne zdarzenia, i np. komunikować się przy ich pomocy między okienkami lub procesami.

Do programowego tworzenia zdarzeń służą dwie funkcje: SendMessage – tworzy zdarzenie i wstrzymuje wykonanie do czasu jego przetworzenia przez adresata. Zwraca odpowiedź adresata. PostMessage – dopisuje zdarzenie do kolejki adresata bez oczekiwania na jego przetworzenie

Istnieją tzw. okna modalne, wstrzymujące przetwarzanie zdarzeń przez pozostałe okna danej aplikacji (np. okno z pytaniem na które należy odpowiedzieć tak/nie). Istnieją też systemowe okna modalne, wstrzymujące przetwarzanie zdarzeń przez wszystkie inne okna (np. pytanie o potwierdzenie zamknięcia systemu).

Przykład pętli obsługi zdarzeń: MSG msg; while(GetMessage(&msg, NULL, 0, 0))

TranslateMessage(&msg); DispatchMessage(&msg);