Немного подробнее может быть полезно.
События вначале.
Итак, ваша программа запущена. Затем вы создаете событие - вызов функции для использования - CreateEvent (). Это событие имеет два состояния; сигнализируется и не сигнализируется. (Вы выбираете состояние, в котором оно начинается). Теперь вы можете ждать этого события , то есть вы можете, например, передать это событие вызову функции операционной системы, а затем ждать этого события. Когда операционная система завершит работу, она изменит состояние события на сигнальное, и вызов функции Wait () вернется.
Теперь, если у вас только один поток, это не очень полезно - вы можете просто вызвать функцию операционной системы и дождаться ее возврата. Но если у вас есть несколько потоков, и вы хотите общаться между ними - ну, вы не можете выполнять вызовы функций для других потоков. Вместо этого вы общаетесь с другим потоком, говорите ему сделать что-то и сообщаете ему событие, а затем ждите (), пока это не будет сделано.
Теперь сообщения.
Программа может иметь так называемый «цикл сообщений», который представляет собой поток, который блокирует чтение очереди сообщений программы. Вы можете отправить сообщение в поток (или окно), и оно будет автоматически прочитано этим потоком. Таким образом, одно из применений: если у вас есть несколько потоков, это выдать сообщение о завершении - пора выйти. Другой способ - сообщить потоку, что вы хотите, чтобы он что-то сделал - и сообщение может принимать два целочисленных значения в качестве данных, так что вы также можете передать указатель на событие, чтобы поток мог сигнализировать вам, когда это будет сделано. (Или вы можете сделать так, чтобы он отправлял вам сообщение, когда все готово; все зависит от того, как вы хотите организовать свой код - на основе событий или сообщений).