请教一个问题:为什么WinMain()用GetMessage()取得消息后要将消息再用Dispatch给Windows呢?

luoshupeng 2010-02-23 09:29:25
加精
请教一个问题:为什么WinMain()用GetMessage()取得消息后要将消息再用Dispatch给Windows呢?
...全文
1539 99 打赏 收藏 转发到动态 举报
写回复
用AI写文章
99 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanglianhai11 2011-10-24
  • 打赏
  • 举报
回复
这不需要原因吧,就是这么定义的
henry-qu 2011-09-08
  • 打赏
  • 举报
回复
《Windows程序设计》中第三章窗口和消息讲的很清楚了,有时间去看一下。79楼讲的很形象了
James_Key 2011-04-06
  • 打赏
  • 举报
回复
很多人都说了嘛,GetMessage()是取出消息队列中的消息的,DispatchMessage()是将取出来的消息交给操作系统,操作系统调用应用程序的消息处理函数来进行处理,当然了,这是针对进队消息而言的
winteryang26 2011-01-19
  • 打赏
  • 举报
回复
看《深入浅出MFC》上说的,开放接口供操作系统调用,让操作系统能对你的程序进行一些控制
czarsir 2011-01-16
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 luoshupeng 的回复:]
引用 16 楼 visualeleven 的回复:
看书去,看Windows消息基础
这才是正道理
[/Quote]
你....明知故犯
spademz 2011-01-05
  • 打赏
  • 举报
回复
从系统实现方面说
多任务系统肯定是很多任务同时进行的,
因此有很多消息队列,如果windows来控制消息回调,
那么它要维护很多消息队列,显然这样系统与应用程序耦合太多,实现太复杂,而且效率低!
chrc1122 2010-07-31
  • 打赏
  • 举报
回复
我也有些困扰 现在明白啦 O(∩_∩)O谢谢
VonEverGreen 2010-07-09
  • 打赏
  • 举报
回复
菜鸟来学习学习
w20011025 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 89 楼 heiheizh618 的回复:]
挖坟居然挖出了个精华。。。太厉害了
[/Quote]good
win2000_li 2010-05-27
  • 打赏
  • 举报
回复
学习。。。。。。。。。。。。。。
supview 2010-05-21
  • 打赏
  • 举报
回复
有3个回答的很经典啊,这个也是困扰了我很久的问题,现在终于明白了!
zzjniatok 2010-05-14
  • 打赏
  • 举报
回复
因为GetMessage是读取信息啊,而dispatch指针,发出信息,
zzjniatok 2010-05-13
  • 打赏
  • 举报
回复
查一下,原理。还没搞懂
dirdirdir3 2010-04-09
  • 打赏
  • 举报
回复
不过说真的,按窗口来进行消息排队也不是不可能,可以以轮询的方式来进行消息处理............这样的话可能更加公平........不过窗口实在是太多了,大到一个对话框,小到一个按钮,标签都是窗口,都要处理消息,每个窗口都加消息队列的话,那个资源消耗的太厉害了...................而且也会浪费时间.........
heiheizh618 2010-04-09
  • 打赏
  • 举报
回复
挖坟居然挖出了个精华。。。太厉害了
dirdirdir3 2010-04-09
  • 打赏
  • 举报
回复
当然你可以说排队可以按窗口排,但是这样的话一个线程可以有很多个窗口,如果多个窗口都有排队的话那下一次就难以决定那个消息先处理了,还不如总的来个排队,先到先得..............
dirdirdir3 2010-04-09
  • 打赏
  • 举报
回复
本来就是windows自己处理的啊,当然这个自己处理需要有管理(因为不能同时处理多个消息,毕竟是一个线程),这个管理机制就是get....dispatch......等等,一个线程中的消息一次只能处理一个,如果是直接发到windows处理就会出现这个windows正在处理,又有一个消息进来了,但是却没有办法处理.只能排队了,排队的话就需要有人通知原来的消息处理完了,该到下一个(get......dispatch......)了............
lzt20007 2010-04-09
  • 打赏
  • 举报
回复
消息分为三种。
不同的消息对应不同的处理方法。
DispatchMessage()就是用于将获得消息分门别类,交给相应的程序处理。
Simao 2010-04-09
  • 打赏
  • 举报
回复
看来消息机制还没有理解...
jogger007 2010-04-09
  • 打赏
  • 举报
回复
很强大的帖子。。
GetMessage()获取所有系统或者非系统消息,DispathMessage()来告诉自己的下属出来干活.
加载更多回复(79)

16,472

社区成员

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

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

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