Partilhar via


Mensagens e filas de mensagens

Esta seção descreve mensagens e filas de mensagens e como usá-las em seus aplicativos.

Nesta seção

Nome Descrição
Sobre mensagens e filas de mensagens Esta seção discute mensagens do Windows e filas de mensagens.
Usando mensagens e filas de mensagens Os exemplos de código a seguir demonstram como executar as tarefas a seguir associadas a mensagens do Windows e filas de mensagens.
Referência de mensagem Contém a referência de API.

mensagens System-Provided

Para obter listas das mensagens fornecidas pelo sistema, consulte Mensagens definidas pelo sistema.

Funções de mensagem

Nome Descrição
BroadcastSystemMessage Envia uma mensagem para os destinatários especificados. Os destinatários podem ser aplicativos, drivers instaláveis, drivers de rede, drivers de dispositivo no nível do sistema ou qualquer combinação desses componentes do sistema.
Para receber informações adicionais se a solicitação for definida, use a função BroadcastSystemMessageEx .
BroadcastSystemMessageEx Envia uma mensagem para os destinatários especificados. Os destinatários podem ser aplicativos, drivers instaláveis, drivers de rede, drivers de dispositivo no nível do sistema ou qualquer combinação desses componentes do sistema.
Essa função é semelhante a BroadcastSystemMessage , exceto que essa função pode retornar mais informações dos destinatários.
Dispatchmessage Envia uma mensagem para um procedimento de janela. Normalmente, ele é usado para expedir uma mensagem recuperada pela função GetMessage .
GetInputState Determina se há mensagens de botão do mouse ou de teclado na fila de mensagens do thread de chamada.
GetMessage Recupera uma mensagem da fila de mensagens do thread de chamada. A função despacha mensagens enviadas de entrada até que uma mensagem postada esteja disponível para recuperação.
Ao contrário de GetMessage, a função PeekMessage não aguarda que uma mensagem seja postada antes de retornar.
GetMessageExtraInfo Recupera as informações adicionais da mensagem para o thread atual. Informações extras de mensagem são um valor definido pelo aplicativo ou pelo driver associado à fila de mensagens do thread atual.
GetMessagePos Recupera a posição do cursor para a última mensagem recuperada pela função GetMessage .
Para determinar a posição atual do cursor, use a função GetCursorPos .
GetMessageTime Recupera o tempo da mensagem para a última mensagem recuperada pela função GetMessage . O tempo é um inteiro longo que especifica o tempo decorrido, em milissegundos, desde o momento em que o sistema foi iniciado até o momento em que a mensagem foi criada (ou seja, colocada na fila de mensagens do thread).
GetQueueStatus Indica o tipo de mensagens encontradas na fila de mensagens do thread de chamada.
InSendMessage Determina se o procedimento de janela atual está processando uma mensagem que foi enviada de outro thread (no mesmo processo ou em um processo diferente) por uma chamada para a função SendMessage .
Para obter informações adicionais sobre como a mensagem foi enviada, use a função InSendMessageEx .
InSendMessageEx Determina se o procedimento de janela atual está processando uma mensagem que foi enviada de outro thread (no mesmo processo ou em um processo diferente).
PeekMessage Despacha mensagens enviadas de entrada, verifica a fila de mensagens de thread para uma mensagem postada e recupera a mensagem (se houver alguma).
PostMessage Posta uma mensagem na fila de mensagens associada ao thread que criou a janela especificada e retorna sem esperar que o thread processe a mensagem.
Para postar uma mensagem na fila de mensagens associada a um thread, use a função PostThreadMessage .
Postquitmessage Indica ao sistema que um thread fez uma solicitação para encerrar (encerrar). Normalmente, ele é usado em resposta a uma mensagem de WM_DESTROY .
Postthreadmessage Posta uma mensagem na fila de mensagens do thread especificado. Ele retorna sem esperar que o thread processe a mensagem.
Registerwindowmessage Define uma nova mensagem de janela que tem a garantia de ser exclusiva em todo o sistema. O valor da mensagem pode ser usado ao enviar ou postar mensagens.
ReplyMessage Responde a uma mensagem enviada por meio da função SendMessage sem retornar o controle para a função que chamou SendMessage.
SendAsyncProc Uma função de retorno de chamada definida pelo aplicativo usada com a função SendMessageCallback . O sistema passa a mensagem para a função de retorno de chamada depois de passar a mensagem para o procedimento de janela de destino. O tipo SENDASYNCPROC define um ponteiro para essa função de retorno de chamada. SendAsyncProc é um espaço reservado para o nome da função definida pelo aplicativo.
Sendmessage Envia a mensagem especificada para uma janela ou janela. A função SendMessage chama o procedimento de janela para a janela especificada e não retorna até que o procedimento de janela tenha processado a mensagem.
Para enviar uma mensagem e retornar imediatamente, use a função SendMessageCallback ou SendNotifyMessage . Para postar uma mensagem na fila de mensagens de um thread e retornar imediatamente, use a função PostMessage ou PostThreadMessage .
SendMessageCallback Envia a mensagem especificada para uma janela ou janela. Ele chama o procedimento de janela para a janela especificada e retorna imediatamente. Depois que o procedimento de janela processa a mensagem, o sistema chama a função de retorno de chamada especificada, passando o resultado do processamento da mensagem e um valor definido pelo aplicativo para a função de retorno de chamada.
Sendmessagetimeout Envia a mensagem especificada para mais uma janela.
Sendnotifymessage Envia a mensagem especificada para uma janela ou janela. Se a janela tiver sido criada pelo thread de chamada, SendNotifyMessage chamará o procedimento de janela para a janela e não retornará até que o procedimento de janela tenha processado a mensagem. Se a janela foi criada por um thread diferente, SendNotifyMessage passa a mensagem para o procedimento de janela e retorna imediatamente; ele não aguarda que o procedimento de janela conclua o processamento da mensagem.
SetMessageExtraInfo Define as informações adicionais da mensagem para o thread atual. Informações extras de mensagem são um valor definido pelo aplicativo ou pelo driver associado à fila de mensagens do thread atual. Um aplicativo pode usar a função GetMessageExtraInfo para recuperar informações de mensagem extras de um thread.
Translatemessage Converte mensagens de chave virtual em mensagens de caractere. As mensagens de caractere são postadas na fila de mensagens do thread de chamada, para serem lidas na próxima vez que o thread chamar a função GetMessage ou PeekMessage .
WaitMessage Gera controle para outros threads quando um thread não tem outras mensagens em sua fila de mensagens. A função WaitMessage suspende o thread e não retorna até que uma nova mensagem seja colocada na fila de mensagens do thread.

Constantes de mensagem

Nome Descrição
OCM__BASE Usado para definir mensagens privadas para uso por classes de janela privada.
WM_APP Usado para definir mensagens privadas.
WM_USER Usado para definir mensagens privadas para uso por classes de janela privada.

Estruturas de mensagens

Nome Descrição
BSMINFO Contém informações sobre uma janela que negou uma solicitação de BroadcastSystemMessageEx.
MSG Contém informações da mensagem da fila de mensagens do thread.