CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

请教:MFC是否每个popup窗口使用了一个线程处理消息循环及模拟模态对话框问题

楼主njchf()2006-01-25 23:33:30 在 VC/MFC / 界面 提问

不知道MFC是使用了一个线程进行调度还是为每个popup窗口创建一个消息循环  
   
  最近在作smartphone应用,由于不能用MFC,而且绘图方面较多,界面没有使用dialog,控件基本上全靠自己绘制  
   
  我现在是为每个popup窗口创建一个线程进行消息调度,现在希望能够用window模拟模态对话框  
   
  窗口1(主窗口)-->窗口2(模拟模态对话框)-->窗口3(先不管类型)  
   
  我的实现是创建窗口2时禁用窗口1,然后窗口1的消息循环线程等待窗口2的消息循环结束  
   
  不过现在发现了两个问题:  
  1.   窗口1被禁用后,窗口2销毁后窗口1会跑到后台去,必须首先启用窗口1,然后setforegroundwindow才行,这样刷新会有明显的一个间隔,显示了操作系统窗口一下  
   
  2.   在窗口2中又创建了一个窗口3,此时如果窗口2无法盖住窗口1,当3销毁时,窗口1会收到WM_PAINT消息和WM_ERASEBKGROUD消息,但是由于窗口1的消息循环在等窗口2,无法响应,导致窗口1的可见区域无法重绘  
   
  以前都用MFC,现在自己用API写才发现这么罗嗦  
  现在对这个内部消息处理基本了解了,打算调整一下,希望参考一下MFC的实现  
   
  我想了一下,要实现等待2的结束的一种办法就是只使用一个线程调度,然后在窗口2中暂时接管消息循环  
   
  还请众高手赐教一二  
  问题点数:100、回复次数:4Top

1 楼yuanbocsut(井冈星火)回复于 2006-01-26 11:16:27 得分 20

消息驱动,回调函数实现Top

2 楼goodboyws(深夜不眠者(VCMVP))回复于 2006-01-26 14:27:05 得分 20

不是Top

3 楼pkrobbie(pkrobbie)回复于 2006-01-26 14:48:48 得分 40

MFC默认使用一个线程处理所有Message。  
   
  去VC的目录下找找这两个函数看看  
  CWnd::RunModalLoop   /   CDialog::DoModalTop

4 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2006-01-28 10:50:50 得分 20

不会。OS会保证正确派发消息的。Top

相关问题

  • 1如何用mfc生成及显示非模态对话框。
  • MFC 工程中如何创建非模态对话框
  • 这样将一个基于MFC的模态对话框改为非模对话框好像不对?
  • 无模态对话框
  • 模态对话框问题
  • 调用模态对话框的问题
  • 非模态对话框的问题
  • 如何设置模态对话框
  • 有关模态对话框的问题!
  • 模态对话框中的session

关键词

  • 线程
  • 消息
  • 模拟
  • 循环
  • mfc
  • 模拟模态对话框
  • popup
  • 调度
  • 使用
  • 创建

得分解答快速导航

  • 帖主:njchf
  • yuanbocsut
  • goodboyws
  • pkrobbie
  • DentistryDoctor

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo