Постановка в очередь сообщения


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

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

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

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

case WM_DESTROY: 
 
    // Выполнение задач по очистке. 
 
    PostQuitMessage(0); 
    break; 

 

Назад в оглавление темы
На главную страницу темы

Hosted by uCoz