CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

一个模式对话框的问题

楼主cjn2009(水寒)2006-03-07 01:43:37 在 VC/MFC / 基础类 提问

对话框上两个按钮,一个是按钮启动一个数学运算程序(需要计算一段比较长的时间),在运算过程中用另外一个按钮发送一个CANCLE消息关闭对话框,然后发现运算程序还在继续运算,并且这个时候只要计算没有完成就直接关闭主窗口程序就会报错。这是为什么?  
  难道关闭模式对话框后,在对话框中启动的运算程序是不会停止的吗?  
  问题点数:5、回复次数:8Top

1 楼cjn2009(水寒)回复于 2006-03-07 09:25:25 得分 0

米人能解释下么?Top

2 楼ysc918(白纸人生)回复于 2006-03-07 09:32:46 得分 0

如果运算程序是另一个exe的话,应该不会停止的。Top

3 楼cjn2009(水寒)回复于 2006-03-07 14:57:38 得分 0

不是另外一个exe啊,只是个数学运算,就像是  
  int   i=1  
  i=i++  
  这样一类的数学运算Top

4 楼ysc918(白纸人生)回复于 2006-03-07 18:27:45 得分 0

用另外一个按钮发送一个CANCLE消息关闭对话框  
  ------------------------------  
  你说的像是中断运行似的,我不清楚,你用OnOK()试试  
   
  Top

5 楼soong0313(天山雪人)回复于 2006-03-07 18:30:46 得分 0

用多线程?  
   
  一个用户计算,一个接收用户输入?  
   
  不是很明白你的问题Top

6 楼cjn2009(水寒)回复于 2006-03-08 00:06:07 得分 0

用消息控制,不知道怎么说哈,程序代码就是  
  MSG   message;  
  .....  
  if   (::PeekMessage(&message,   NULL,   0,   0,   PM_REMOVE))      
  {  
      ::TranslateMessage(&message);  
        ::DispatchMessage(&message);  
  }  
   
  用个简例来说明下问题:  
  比如对话框一个按钮是start他的函数是启动一个很长的for循环计算,假如这个这个for循环计算完成需要5分钟。在5分钟之内我用另外一个按钮终止对话框(就认为是一个cancle按钮),这时候发现for循环计算还在继续,但是对话框都已经终止了运算怎么还会继续运算呢?而且只要for循环没完成就直接关闭主窗口程序就会出错,这是什么原因?  
   
  Top

7 楼cjn2009(水寒)回复于 2006-03-08 14:25:11 得分 0

那位大大解释下啊?Top

8 楼Darter()回复于 2006-03-08 14:42:53 得分 5

你想想,你发了一个CANCEL消息过去后,有人给你停止For循环了吗?你只是中止对话框,Window也只是一个Destory.然后释放资源,但并不会去停止你的For,所以出错了.在终止对话框的时候,你必须要保证一点:不在访问改对话框的任何资源.  
  可以在For中设置一个事件来响应Cancel消息.建议在大的数据计算的时候用多线程实现.Top

相关问题

  • 模式对话框
  • 模式对话框问题
  • 无模式对话框!!!急
  • 模式对话框问题
  • 模式对话框问题
  • 模式与无模式对话框?
  • 关于无模式对话框
  • 非模式对话框的使用
  • 关于模式对话框的问题!
  • 多个模式对话框的显示

关键词

  • 循环
  • 数学
  • 消息
  • 对话框
  • 运算
  • 按钮
  • cancle
  • 计算
  • 程序
  • 关闭

得分解答快速导航

  • 帖主:cjn2009
  • Darter

相关链接

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

广告也精彩

反馈

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