消息和消息队列

本部分介绍消息和消息队列,以及如何在应用程序中使用它们。

在本部分中

名字 描述
关于消息和消息队列 本部分讨论 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 函数调用指定窗口的窗口过程,在窗口过程处理消息之前不会返回。
若要立即发送消息并立即返回,请使用 SendMessageCallbackSendNotifyMessage 函数。 若要将消息发布到线程的消息队列并立即返回,请使用 PostMessagePostThreadMessage 函数。
SendMessageCallback 将指定的消息发送到窗口或窗口。 它调用指定窗口的窗口过程并立即返回。 窗口过程处理消息后,系统将调用指定的回调函数,并将消息处理的结果和应用程序定义的值传递给回调函数。
SendMessageTimeout 将指定的消息发送到多个窗口之一。
SendNotifyMessage 将指定的消息发送到窗口或窗口。 如果窗口是由调用线程创建的,SendNotifyMessage 调用窗口的窗口过程,并且直到窗口过程处理消息后才会返回。 如果窗口是由另一个线程创建的,SendNotifyMessage 将消息传递到窗口过程并立即返回;它不会等待窗口过程完成处理消息。
SetMessageExtraInfo 设置当前线程的额外消息信息。 额外的消息信息是与当前线程的消息队列关联的应用程序或驱动程序定义值。 应用程序可以使用 GetMessageExtraInfo 函数来检索线程的额外消息信息。
TranslateMessage 将虚拟密钥消息转换为字符消息。 字符消息将发布到调用线程的消息队列,下次线程调用 getMessagePeekMessage 函数时读取该消息。
WaitMessage 当线程在其消息队列中没有其他消息时,生成对其他线程的控制。 WaitMessage 函数会暂停线程,直到将新消息置于线程的消息队列中后才会返回。

消息常量

名字 描述
OCM__BASE 用于定义专用窗口类使用的专用消息。
WM_APP 用于定义专用消息。
WM_USER 用于定义专用窗口类使用的专用消息。

消息结构

名字 描述
BSMINFO 包含有关拒绝来自 BroadcastSystemMessageEx请求的窗口的信息。
MSG 包含来自线程消息队列的消息信息。