消息和消息队列

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

本节内容

名称 说明
关于消息和消息队列 本部分讨论 Windows 消息和消息队列。
使用消息和消息队列 以下代码示例演示如何执行与 Windows 消息和消息队列关联的以下任务。
消息引用 包含 API 引用。

System-Provided消息

有关系统提供的消息的列表,请参阅 系统定义的消息

消息函数

名称 说明
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 的请求的窗口的信息。
味精 包含来自线程的消息队列的消息信息。