Для подробного ознакомления лучше прочитать MFC: "Шаг 332 - MFC и синхронизация", MSDN: "Шаг 83 - Что такое События (Event) синхронизации", WinAPI: "Шаг 119 - Функции CreateEvent(), SetEvent(), ResetEvent()".
В MFC для работы с Event есть соответствующий класс CEvent. Конструктор этого класса такой:
CEvent ( BOOL bInitiallyOwn = FALSE, // разрешения использовать CMultilock или CSingleLock BOOL bManualReset = FALSE, // ручное или автомат LPCTSTR lpszName = NULL, // имя сообщения LPSECURITY_ATTRIBUTES lpsaAttribute = NULL // атрибут безопасности );
Методы работы аналогичны функциям API:
SetEvent PulseEvent ResetEvent
Объявить его можно и без аргументов. Вот так.
CEvent ce;
Установить в сигнальное состояние:
ce.SetEvent();
Следить за ним можно с помощью функции WaitForSingleObject():
::WaitForSingleObject(ce.m_hObject,INFINITE);
С INFINITE мы не встречались. Эта константа говорит, что не надо возвращать управление пока мы не дождемся сигнала.
Объявлен этот класс в заголовочном файле:
#include "afxmt.h"