windows中的消息队列执行的顺序!

silent2088 2009-10-17 04:39:42
我想问当消息队列中有有两个WM_PAINT的消息,一个是子窗口的,另一个是父窗口的。子窗口的那个先进入队列中。按道理,应先执行子窗口的WM_PAINT。但是它却偏偏先执行父窗口的。
...全文
230 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wltg2001 2009-10-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wjlsmail 的回复:]
引用 6 楼 wltg2001 的回复:
引用楼主 silent2088 的回复:
我想问当消息队列中有有两个WM_PAINT的消息,一个是子窗口的,另一个是父窗口的。子窗口的那个先进入队列中。按道理,应先执行子窗口的WM_PAINT。但是它却偏偏先执行父窗口的。

消息队列中不可能同时有两个WM_PAINT的


Windows系统消息队列为什么不能存在多个相同的消息呢?只是窗口过程不同罢了;
同一个窗体的消息队列应该也容许存在多个同名的消息等待处理:多次执行同样的窗口过程。
所有窗体消息都要进入Windows消息队列进行分发。队列先进先出,在创建窗体和默认的描画时,父窗体的WM_PAINT先于子窗体的WM_PAINT进入队列,但从逻辑上可以控制两个消息的响应先后顺序。

描述不正确的地方请大家指正。
[/Quote]
WM_PAINT是一个低级别的消息,每当消息循环为空时,系统检测到有一个无效区时才会放出WM_PAINT消息,消息队列中怎么可能会有两个WM_PAINT昵?

每个窗口都有一个消息队列,你这种情况,父窗口与子窗口分别有自己的消息队列。。。
不是共用一个队列。。。
=====================
明显的错误说法,消息队列是对线程来说的,每一个线程有一个消息队列,而不是每一个窗口有一个消息队列
wjlsmail 2009-10-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wltg2001 的回复:]
引用楼主 silent2088 的回复:
我想问当消息队列中有有两个WM_PAINT的消息,一个是子窗口的,另一个是父窗口的。子窗口的那个先进入队列中。按道理,应先执行子窗口的WM_PAINT。但是它却偏偏先执行父窗口的。

消息队列中不可能同时有两个WM_PAINT的
[/Quote]

Windows系统消息队列为什么不能存在多个相同的消息呢?只是窗口过程不同罢了;
同一个窗体的消息队列应该也容许存在多个同名的消息等待处理:多次执行同样的窗口过程。
所有窗体消息都要进入Windows消息队列进行分发。队列先进先出,在创建窗体和默认的描画时,父窗体的WM_PAINT先于子窗体的WM_PAINT进入队列,但从逻辑上可以控制两个消息的响应先后顺序。

描述不正确的地方请大家指正。
silent2088 2009-10-17
  • 打赏
  • 举报
回复
谢谢啦!
strwolf 2009-10-17
  • 打赏
  • 举报
回复
我认为
同一消息队列中可以有2个不同窗口类的WM_PAINT消息 因为他们发向不同的窗口过程
都是自己的理解 带一些猜测
不对 请指正
wltg2001 2009-10-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 silent2088 的回复:]
我想问当消息队列中有有两个WM_PAINT的消息,一个是子窗口的,另一个是父窗口的。子窗口的那个先进入队列中。按道理,应先执行子窗口的WM_PAINT。但是它却偏偏先执行父窗口的。
[/Quote]
消息队列中不可能同时有两个WM_PAINT的
strwolf 2009-10-17
  • 打赏
  • 举报
回复
我认为
父窗口的WM_PAINT消息优先级高于子窗口的WM_PAINT消息的优先级
而并非时间轴意义上的先进必定先出
silent2088 2009-10-17
  • 打赏
  • 举报
回复
噢!对··
为什么先响应父窗口的呢!
wjlsmail 2009-10-17
  • 打赏
  • 举报
回复
应该先是父窗体先响应WM_PAINT
wjlsmail 2009-10-17
  • 打赏
  • 举报
回复
应该先是父窗体响应WM_PAINT
ok208043624 2009-10-17
  • 打赏
  • 举报
回复
每个窗口都有一个消息队列,你这种情况,父窗口与子窗口分别有自己的消息队列。。。
不是共用一个队列。。。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧