1 消息队列
用于存放消息的队列,消息在队列中先进先出。
所有窗口都有消息队列,程序从队列中取消息。
2 消息队列的类型
2.1 系统消息队列
由系统维护的消息队列,存放系统产生的消息
例如:键盘消息、鼠标消息。
2.2 程序消息队列
属于程序(线程)的消息队列,由程序(
线程)自己维护。
3 消息队列的关系
3.1 当鼠标,键盘产生消息时,先放入系统消息
队列。
3.2 系统会根据存放的消息,找到对应的窗口信
息。
3.3 按照对应窗口信息放入消息程序消息
队列中。
4.1 根据消息和消息队列的使用关系,将消息
分为:
队列消息 - 存入消息队列,消息的发送和
获取都通过消息队列完成。
非队列消息 - 不存入消息队列,直接调用
窗口处理函数。
4.2 队列消息 - 先把消息放入队列,通过消息
循环从队列中取得消息并发送给窗口处理
函数。
PostMessage - 向队列中存放消息。
GetMessage/PeekMessage - 取得队列消息
通常情况下按照队列处理的消息:
WM_PAINT/键盘消息/鼠标消息等...
4.3 非队列消息 - 消息直接找 对应 窗口处理
函数,调用函数,完成消息处理。
SendMessage - 非队列消息,直接调用窗
口处理函数,等待处理结果。