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


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

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

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

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

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

Списки системных сообщений см. в разделе Системные сообщения.

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

Имя Описание
BroadcastSystemMessage Отправляет сообщение указанным получателям. Получателями могут быть приложения, устанавливаемые драйверы, сетевые драйверы, драйверы устройств на уровне системы или любое сочетание этих системных компонентов.
Чтобы получить дополнительные сведения, если запрос определен, используйте функцию BroadcastSystemMessageEx .
BroadcastSystemMessageEx Отправляет сообщение указанным получателям. Получателями могут быть приложения, устанавливаемые драйверы, сетевые драйверы, драйверы устройств на уровне системы или любое сочетание этих системных компонентов.
Эта функция похожа на BroadcastSystemMessage , за исключением того, что она может возвращать дополнительные сведения от получателей.
DispatchMessage Отправляет сообщение в процедуру окна. Обычно он используется для отправки сообщения, полученного функцией GetMessage .
GetInputState Определяет, есть ли в очереди сообщений вызывающего потока сообщения с помощью кнопки мыши или клавиатуры.
GetMessage Извлекает сообщение из очереди сообщений вызывающего потока. Функция отправляет входящие отправленные сообщения до тех пор, пока отправленное сообщение не будет доступно для получения.
В отличие от GetMessage, функция PeekMessage не ожидает отправки сообщения перед возвратом.
GetMessageExtraInfo Извлекает дополнительные сведения о сообщении для текущего потока. Дополнительные сведения о сообщении — это определенное приложением или драйвером значение, связанное с очередью сообщений текущего потока.
GetMessagePos Извлекает позицию курсора для последнего сообщения, полученного функцией GetMessage .
Чтобы определить текущее положение курсора, используйте функцию GetCursorPos .
GetMessageTime Извлекает время последнего сообщения, полученного функцией GetMessage . Time — это длинное целое число, указывающее время, затраченное в миллисекундах, с момента запуска системы до момента создания сообщения (то есть в очереди сообщений потока).
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 Содержит информацию сообщения из очереди сообщений потока.