| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1955 人关注过本帖
标题:windows的消息机制
取消只看楼主 加入收藏
JZY0801
Rank: 2
等 级:论坛游民
帖 子:25
专家分:36
注 册:2010-12-23
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
windows的消息机制
关于GetMessage这个函数有这样的解释:
如果消息队列中没有任何消息(即没有用户输入),这个函数会一直等待到消息队列中有消息,并从消息队列中取出消息!

下面是一段程序代码:
while(!GetMessage(&msg , NULL , 0 , 0))
{
    TranslateMessage(&msg) ;
    DispatchMessage(&msg) ;
}

如果这段代码按照上面的那个讲解,开始的时候应用程序的消息队列中如果没有任何消息,那么GetMessage函数会一直等待消息队列中有消息,也就是可以理解为暂时是无法执行这个while的循环,那么请问一下什么时候才开始执行这个while的循环?也就是说系统是如何将消息放到应用程序消息队列中的。

如果上面那段代码我这样写是否是可以的呢?

do{   
    TranslateMessage(&msg) ;
    DispatchMessage(&msg) ;
    }while(!GetMessage(&msg , NULL , 0 , 0)) ;

这两种写法哪一种是比较好的?


[ 本帖最后由 JZY0801 于 2011-3-7 14:37 编辑 ]
搜索更多相关主题的帖子: windows 应用程序 
2011-03-07 14:15
JZY0801
Rank: 2
等 级:论坛游民
帖 子:25
专家分:36
注 册:2010-12-23
收藏
得分:0 
难道就没有人知道这个问题吗?
2011-03-07 18:39
JZY0801
Rank: 2
等 级:论坛游民
帖 子:25
专家分:36
注 册:2010-12-23
收藏
得分:0 
在这里我更正一下我的程序里的那个写法,因为我的笔误,导致了在GetMessage函数的前面加了一个“!
在这里表示一下抱歉!

9楼的朋友说GetMessage函数会返回-1 ,确实是这样的,但是返回-1的情况好像很少会发生的吧?!

我的第二种写法我尝试了一下,发现程序也是可以执行的,当然了这个也不能说明什么问题。

我按照第一种写法进行调试,发现在我没有输入任何消息的情况下仍然是可以执行的,同时我也观察了一下msg中的message,发现在最开始运行程序的时候这个值并不是空
的 ,也就是说在开始的时候message的值并不是没有。

我不知道我上面的说法是否是成立的!

希望学习或者了解windows编程的朋友能够进来讨论一下,不管是对是错,起码也可以交流一下!
2011-03-08 22:05
快速回复:windows的消息机制
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012234 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved