捐助郴维网
感谢您对郴维网的支持,你的支持将是郴维网持续发展的动力!
二维码
×
当前位置:郴维网 >API档案 > 正文
25 2017.05

PeekMessage

点击次数:1351 更新时间:2017-5-25 11:08:35  【打印此页

函数功能:

PeekMessage 函数检查线程的消息队列并获取消息(如果存在的话)。


API 函数原型:

BOOL WINAPI PeekMessage(
  _Out_    LPMSG lpMsg,
  _In_opt_ HWND  hWnd,
  _In_     UINT  wMsgFilterMin,
  _In_     UINT  wMsgFilterMax,
  _In_     UINT  wRemoveMsg
);



参数解析:

参数

含义

lpMsg

指向 MSG 结构的指针,用于存放获取到的消息

hWnd

1. 需要获取消息的窗口的句柄,该窗口必须属于当前线程
2. 当其值是 NULL 时,将获取所有的当前线程的窗口消息和线程消息
3. 当其值是 -1 时,只获取当前线程消息

wMsgFilterMin

指定被可以被获取的消息值的最小整数(消息其实就是一个被定义的整数)

wMsgFilterMax

指定被可以被获取的消息值的最小整数

wRemoveMsg

指定消息如何被处理(该值可以是下边一个或多个组合):

含义

PM_NOREMOVE

消息被获取后不从消息队列中删除

PM_REMOVE

消息被获取后并从消息队列中删除

PM_NOYIELD

1. 防止系统释放任何正在等待被调用的线程
2. 跟 PM_NOREMOVE 或 PM_REMOVE 相结合使用


默认设置下处理所有类型的消息,若要求只处理某些消息,则指定下列一个或多个组合:

含义

PM_QS_INPUT

处理鼠标和键盘消息

PM_QS_PAINT

处理绘图消息

PM_QS_POSTMESSAGE

处理所有 posted 的消息,包括计时器和快捷键消息

PM_QS_SENDMESSAGE

处理所有 send 的消息



返回值:

1. 如果获取到有效的消息,返回值是非 0;

2. 如果获取不到消息,返回值是 0。


备注:

1. 如果 hWnd 参数不为零,则 PeekMessage 函数只获取属于 hWnd 窗口的消息,以及被 IsChild 函数确定为 hWnd 的子窗口的消息;

2. wMsgFilterMin 和 wMsgFilterMax 参数限定消息获取的范围,如果二者都为 0,则消息获取的范围为所有消息;

3. 注意,即便你通过 wMsgFilterMin 和 wMsgFilterMax 参数限定消息获取的范围,但 WM_QUIT 不受此范围影响(无法阻止此消息被 PeekMessage 函数获取);

4.  调用此函数的过程中,如果接收到非排队消息 —— 也就是由该线程调用 SendMessage, SendMessageCallback, SendMessageTimeout, 或 SendNotifyMessage 发送给所属窗口的消息 —— 系统先暂时挂起等待,然后再获取过滤器匹配的第一个队列消息。如果不指定过滤器,那么按照以下顺序获取消息:

  • Sent messages
  • Posted messages
  • Input (hardware) messages and system internal events
  • Sent messages (again)
  • WM_PAINT messages
  • WM_TIMER messages


5. PeekMessage 函数通常不会从消息队列中删除 WM_PAINT 消息,WM_PAINT 会持续保留在消息队列中直到它们被处理,除非一个 WM_PAINT 消息指定的区域为 NULL。

小甲鱼注释:大家应该还记得有三个消息 WM_QUIT, WM_PAINT, WM_TIMER 会被特殊处理,它们总是放在队列的最后面,直到没有其它消息的时候才被处理,连续的 WM_PAINT 消息将被合并成一个以提高绘图效率。

6. 如果一个顶层窗口停止响应的消息超过几秒钟,系统认为窗口没有响应,并使用一个备用窗口替代,该窗口具有相同的 Z 序列、位置、尺寸和视觉属性。这使得用户可以移动、调整大小,甚至关闭该应用程序。然而,这些仅仅是动作,现有的程序事实上仍然没有响应(为了提高用户体验而制作的假象)。当一个程序被调试时,系统并不会为其生成备用窗口。

 

提示
郴维网为您提供各类专业服务:
软件开发,电脑配件销售,WIFI路由器销售,上门电脑维修,上门安装系统,系统安装,软、硬件安装,电脑除尘清灰,显示器维修,WIFI安装调试,服务器维护,数据恢复,密码破解,网络布线,网络检修,打印机维修,打印机加碳粉,苹果电脑安装系统,苹果电脑安装双系统,监控安装维护,电脑外包,笔记本电脑维修,餐饮、美容行业软件安装 等。。。。。。
点击次数:1351 更新时间:2017-5-25 11:08:35  【打印此页

上一条:PtInRect

下一条:IsChild

关键词推荐:郴州电脑城 郴州电脑维修公司 维修电脑公司 郴州软件开发 上门电脑维修 上门安装系统 笔记本电脑维修 郴州打印机维修 打印机加碳粉 电脑安装双系统 苹果电脑双系统 液晶显示器维修 联想笔记本维修 联想笔记本维修电话 戴尔笔记本维修电话 郴州戴尔笔记本维修 戴尔笔记本郴州维修点 华硕笔记本维修点 郴州华硕笔记本维修 郴州笔记本上网维修