MFC多线程与模式对话框 程序中有一些数据处理的程序,执行需要一段时间,要求不能使用进度条,最好使用弹出模式对话框。本人菜鸟,刚试着学习多线程,但是,一旦模式对话框被domodal()以后,后面的函数就不能被执行了。很头疼,是不是这个思路根本就行不通?如果行得通,怎么在模式对话框DoModal()以后,还能执行其他的数据处理,并且在数据处理完毕之后,模式对话框消失?请教各位大侠给指点,请求详细解答。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一般都是开线程处理数据,开线程的同时,把主界面的句柄传过去。线程处理一会了,用POSTMESSAGE 给主界面发消息。发完消息,线程会继续工作。主界面收到消息,进行相应的显示。 这个很简单负责DoModal的窗口Show或者InitDialog的时候去启动线程。线程工作完毕后,发消息通知DoModal的窗口自己关闭,程序函数正常退出。相关的容错看你的需要来做。 可以模态方式调起另外一个exe程序,这个exe当作当前进程的子进程。在当前进程中可以用一个线程来检测这个子进程是否关闭。这里我只能提示个大概思路了,具体代码既不清楚了。 可以用非模态对话框,开始的时候show,结束hide 先显示出非模态对话框,然后开启一个线程,将对话框句柄传递给线程过程的参数。让线程去执行后台数据处理,等线程返回后,使用PostMessage函数中提供WM_CLOSE关闭非模态对话框。 每一个窗口都有一个消息队列,也都有一个线程,比如:button,将窗口的HANDLE 传给worker Thread,处理数据,处理完就像窗口发信息模态对话框本身就是一个线程,只不过是DoModal以后,线程暂停了,其他线程还可以运行,不影响worker Thread 使用用非模态对话框如果用模态对话框,可以将其他的数据处理放在一个线程里,将显示与隐藏对话框放在一个线程里。如果数据处理完成之后向模态对话框POSTTHREADMESSAGE 关闭非模态对话框。 Windows控件消息 的书?? Static控件变色的问题 请问 重绘消息WM_PAINT 一般是什么时候产生,自己可以发送重绘消息吗? ADO连接数据库问题 最新的Microsoft Platform SDK已经不支持VC6.0了?! 我绘制的位图怎么不能显示?? RasEnumEntries函数在win98下为何不行啊? 请教访问USB 什吗样的程序是好程序??什吗专业?学历?“白猫黑猫,捉到老鼠的就是好猫”!!!?? 请教高手如何通过触发器插入远程表记录? 向Access数据库插入时间格式到底怎样写啊? 在线等:CRecordset派生的类的问题。
模态对话框本身就是一个线程,只不过是DoModal以后,线程暂停了,其他线程还可以运行,不影响worker Thread
如果用模态对话框,可以将其他的数据处理放在一个线程里,将显示与隐藏对话框放在一个线程里。如果数据处理完成之后向模态对话框POSTTHREADMESSAGE 关闭非模态对话框。