WinPro logo. Перейти на сайт www.winpro.narod.ru

Пример помещения сообщение в очередь сообщений



Для помещения сообщения в очередь сообщений используется функция PostMessage. Эта функция размещает сообщение в конце очереди сообщений потока и немедленно возвращает управление без ожидания обработки этого сообщения потоком. В качестве параметров функции указываются описатель окна, идентификатор сообщения и два параметра сообщения. Система копирует эти параметры в структуру типа MSG, заполняя также ее члены time и pt, и размещает эту структуру в очереди сообщений.

Описатель окна, указанный в качестве параметра функции PostMessage, используется системой для определения потока, который должен получить сообщение. Если в качестве параметра указать HWND_TOPMOST, то система разместит сообщение во всех очередях потоков, владеющих окнами верхнего уровня.

Функция PostThreadMessage помещает сообщение очередь сообщений определенного потока. Она похожа на PostMessage, но вместо описателя окна в ней указывается идентификатор потока. Идентификатор потока можно получить вызовом функции GetCurrentThreadID.

Используйте функцию PostQuitMessage для выхода из цикла сообщений. Эта функция высылает сообщение WM_QUIT выполняющемуся в данный момент потоку. Получив это сообщение, цикл сообщений потока завершает свою работу. Вызов функции PostQuitMessage используется обычно как реакция на получение сообщения WM_DESTROY, что показано в следующем примере:

case WM_DESTROY: 
 
    // Здесь можно разместить операции подготавливающие
    // задачу к завершению. 
 
    PostQuitMessage(0); 
    break; 
Hosted by uCoz