文本版|topic 高级搜索
   名人堂 帮助 论坛制度 意见反馈 | 首页 博客 周新贴 招聘 专题 新闻
RSS 底部
 
社区导航: 专家门诊   网络技术   操作系统   数据库   程序设计   系统应用   考试认证   CIO及信息化   站长交流   综合交流   下载基地  51CTO产品服务 设为首页 | 收藏本站
51CTO技术论坛» C/C++ » MFC中消息循环处理的几个函数之间的区别       [ 打印]  [ 订阅]  [ 收藏]  [ 推荐给朋友]   [ 本帖文本页]

论坛跳转:
     
标题: [转载] MFC中消息循环处理的几个函数之间的区别  ( 查看:291  回复:0 )   
 
zovxiaolin
技术员  点击可查看详细



帖子 43
精华 1
无忧币 265
积分 235
阅读权限 30
注册日期 2007-8-16
最后登录 2007-8-24 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2007-8-24 09:42   标题:MFC中消息循环处理的几个函数之间的区别
上一帖 |
我个人对消息循环比较感兴趣,对底层的很多细节想深入了解!
  以下说明几个消息循环中的常用函数进行对比
  1 PostMessage 与 SendMessage 函数对比
  SendMessage把消息直接发送到窗口,并调用此窗口的相应消息处理函数,等消息处理函数结束后SendMessage才返回!SendMessage发送的消息不进入系统的消息队列;SendMessage函数有返回值
  PostMessage将消息发送到与创建窗口的线程相关联的消息队列后立即返回ostMessage函数没有返回值;
  2 GetMessage 与 PeekMessage函数的对比
  GetMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax)
  PeekMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax,UINT wRemoveMsg)
  根据参数可以看出以上2个函数的区别,参数wRemoveMsg的作用是指定消息获取的方式,如果设为PM_NOREMOVE,那么消息将不会从消息队列中被移出,如果设为PM_REMOVE,那么消息将会从消息队列中被移出;
  还有区别:
  他们如果没有捕获到消息,程序的主线程会被操作系统挂起。当操作系统再次回来照顾此线程时,发现消息队列中仍然没有消息可取,此时两个函数的行为就不同了:
  GetMessage : 过门不入,操作系统再次挂起此线程,去照顾别的线程;
  PeekMessage: 取回控制权,使程序执行一段时间,等待可能的消息进入消息队列并将其捕获;这时程序进入空闲时间阶段;



网络工程师到底该不该去考CCIE认证?
2007-8-24 09:421楼
[ 顶部 ]
     
论坛跳转:  

| | |

标记已读 · 删除论坛Cookies · 文本版 · WAP
 
| 诚征版主 | 版主堂 | 意见建议 | 大史记 | 论坛地图
Copyright©2005-2008 51CTO.COM  Powered by Discuz!
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系。
京ICP备05051492号