Поделиться через


Сообщения и очереди сообщений

В этом разделе описываются сообщения и очереди сообщений, а также способы их использования в приложениях.

В этом разделе

Имя Описание
о сообщениях и очередях сообщений В этом разделе рассматриваются сообщения Windows и очереди сообщений.
использование сообщений и очередей сообщений В следующих примерах кода показано, как выполнять следующие задачи, связанные с сообщениями Windows и очередями сообщений.
Справочник по сообщению Содержит ссылку на API.

сообщения System-Provided

Списки системных сообщений см. в System-Defined сообщениях.

Функции сообщений

Имя Описание
BroadcastSystemMessage Отправляет сообщение указанным получателям. Получатели могут быть приложениями, устанавливаемыми драйверами, сетевыми драйверами, драйверами устройств на уровне системы или любым сочетанием этих системных компонентов.
Чтобы получить дополнительные сведения, если определен запрос, используйте функцию BroadcastSystemMessageEx.
BroadcastSystemMessageEx Отправляет сообщение указанным получателям. Получатели могут быть приложениями, устанавливаемыми драйверами, сетевыми драйверами, драйверами устройств на уровне системы или любым сочетанием этих системных компонентов.
Эта функция похожа на BroadcastSystemMessage за исключением того, что эта функция может возвращать дополнительные сведения от получателей.
DispatchMessage Отправляет сообщение в процедуру окна. Обычно он используется для отправки сообщения, полученного функцией GetMessage.
GetInputState Определяет наличие сообщений мыши или клавиатуры в очереди сообщений вызывающего потока.
GetMessage Извлекает сообщение из очереди сообщений вызывающего потока. Функция отправляет входящие отправленные сообщения до тех пор, пока сообщение не будет доступно для получения.
В отличие от GetMessage, функция PeekMessage не ожидает отправки сообщения перед возвратом.
GetMessageExtraInfo Извлекает дополнительные сведения о сообщении для текущего потока. Дополнительные сведения о сообщении — это значение, определенное приложением или драйвером, связанное с очередью сообщений текущего потока.
GetMessagePos Извлекает позицию курсора для последнего сообщения, полученного функцией GetMessage.
Чтобы определить текущую позицию курсора, используйте функцию GetCursorPos.
GetMessageTime Извлекает время сообщения для последнего сообщения, полученного функцией GetMessage. Время представляет собой длинное целое число, указывающее истекшее время (в миллисекундах) с момента начала работы системы до момента создания сообщения (то есть помещаемого в очередь сообщений потока).
GetQueueStatus Указывает тип сообщений, найденных в очереди сообщений вызывающего потока.
InSendMessage Определяет, обрабатывает ли текущая процедура окна сообщение, отправленное из другого потока (в том же процессе или другом процессе), вызовом функции SendMessage.
Чтобы получить дополнительные сведения о том, как было отправлено сообщение, используйте функцию InSendMessageEx.
InSendMessageEx Определяет, обрабатывает ли текущая процедура окна сообщение, отправленное из другого потока (в том же процессе или другом процессе).
PeekMessage Отправляет входящие отправленные сообщения, проверяет очередь сообщений потока для отправленного сообщения и извлекает сообщение (если оно существует).
PostMessage Публикует сообщение в очереди сообщений, связанной с потоком, создающим указанное окно, и возвращается без ожидания обработки сообщения.
Чтобы опубликовать сообщение в очереди сообщений, связанной с потоком, используйте функцию PostThreadMessage.
PostQuitMessage Указывает системе, что поток сделал запрос на завершение (выход). Обычно оно используется в ответ на сообщение WM_DESTROY.
PostThreadMessage Отправляет сообщение в очередь сообщений указанного потока. Он возвращается без ожидания обработки сообщения потоком.
RegisterWindowMessage Определяет новое сообщение окна, которое гарантированно будет уникальным во всей системе. Значение сообщения можно использовать при отправке или публикации сообщений.
ReplyMessage Ответы на сообщение, отправленное через функцию SendMessage без возврата элемента управления в функцию, которая называется SendMessage.
SendAsyncProc Определяемая приложением функция обратного вызова, используемая с функцией SendMessageCallback. Система передает сообщение функции обратного вызова после передачи сообщения в процедуру целевого окна. Тип SENDASYNCPROC определяет указатель на эту функцию обратного вызова. SendAsyncProc является заполнителем для имени определяемой приложением функции.
SendMessage Отправляет указанное сообщение в окно или окна. Функция SendMessage вызывает процедуру окна для указанного окна и не возвращается, пока процедура окна не обработала сообщение.
Чтобы отправить сообщение и вернуться немедленно, используйте функцию sendMessageCallback или SendNotifyMessage. Чтобы отправить сообщение в очередь сообщений потока и вернуться немедленно, используйте функцию PostMessage или PostThreadMessage.
SendMessageCallback Отправляет указанное сообщение в окно или окна. Он вызывает процедуру окна для указанного окна и возвращается немедленно. После обработки сообщения система вызывает указанную функцию обратного вызова, передав результат обработки сообщений и определяемое приложением значение функции обратного вызова.
SendMessageTimeout Отправляет указанное сообщение в одно из нескольких окон.
SendNotifyMessage Отправляет указанное сообщение в окно или окна. Если окно было создано вызывающим потоком, SendNotifyMessage вызывает процедуру окна для окна и не возвращается, пока процедура окна не обработала сообщение. Если окно было создано другим потоком, SendNotifyMessage передает сообщение в процедуру окна и возвращается немедленно; Он не ожидает завершения обработки сообщения процедурой окна.
SetMessageExtraInfo Задает дополнительные сведения о сообщении для текущего потока. Дополнительные сведения о сообщении — это значение, определенное приложением или драйвером, связанное с очередью сообщений текущего потока. Приложение может использовать функцию GetMessageExtraInfo для получения дополнительных сведений о сообщении потока.
TranslateMessage Преобразует сообщения виртуального ключа в символьные сообщения. Символьные сообщения публикуются в очереди сообщений вызывающего потока, чтобы прочитать следующий раз, когда поток вызывает функцию GetMessage или PeekMessage.
WaitMessage Возвращает управление другими потоками, если поток не имеет других сообщений в очереди сообщений. Функция WaitMessage приостанавливает поток и не возвращается, пока новое сообщение не будет помещено в очередь сообщений потока.

Константы сообщений

Имя Описание
OCM__BASE Используется для определения частных сообщений для использования классами частного окна.
WM_APP Используется для определения частных сообщений.
WM_USER Используется для определения частных сообщений для использования классами частного окна.

Структуры сообщений

Имя Описание
BSMINFO Содержит сведения о окне, которое отказано в запросе от BroadcastSystemMessageEx.
MSG Содержит сведения о сообщении из очереди сообщений потока.