工作线程执行繁重运算时,程序界面用滚动条显示进度?我用了三个线程:
工作线程:运算。结束后SetEvent(hEventFinish),发信号给主线程。
显示线程:DoModal一个派生的CDialog类,上面滚动条动作。
主线程:先后创建上面两个线程一。接收到工作线程发出的信号,使派生CDialog对话框关闭。问题:
1:显示线程只有用CWindThread派生类,并一定要在构造函数里用DoModal出对话框,才能使工作线程工作的同时,显示对话框。还有其它办法吗?
2:当主线程收到工作线程的hEventFinish信号后,如何通知显示线程,让其关闭对话框?谢谢各位!!
工作线程:运算。结束后SetEvent(hEventFinish),发信号给主线程。
显示线程:DoModal一个派生的CDialog类,上面滚动条动作。
主线程:先后创建上面两个线程一。接收到工作线程发出的信号,使派生CDialog对话框关闭。问题:
1:显示线程只有用CWindThread派生类,并一定要在构造函数里用DoModal出对话框,才能使工作线程工作的同时,显示对话框。还有其它办法吗?
2:当主线程收到工作线程的hEventFinish信号后,如何通知显示线程,让其关闭对话框?谢谢各位!!
解决方案 »
- 关于图像对比问题,得到了变化区域,但是出问题了,大家帮我看看
- SendInput 没有用?
- 刷新窗口的方法
- 这个结构我查不到:CONTENT_ITEMS,还有这个函数,SetItems.
- 大手大脚之控件篇
- 请教一些关于水晶报表的问题?
- constructors not allowed a return type 这个错误是什么意思?
- CPaintDC dc(this)? what purpose this sentence ?
- 我想看一些mfc的源码,但是太多,请问从哪入手?
- tc2.0编译程序出错:_inpw未定义,如何处理?
- 我的个人简历,大家给点意见?
- 应用ActiveSkin在MDI程序中的问题?
也可以用事件通知
如何在CWinThread的派生类里接收事件通知和postthreadmessage消息。
在Run函数里吗?
CWinThread派生类哪个函数里执行线程工作?RUN?
PostThreadMessage(WM_QUIT,0,0)并没有能把CDialog关闭?
我是在CWindThread构造里DOMODAL出Dialog的。
在Run函数里吗?
在Run函数里用getmessage函数获取消息
DWORD WINAPI ProcThread(LPVOID lpParam)
{
HWND hWnd=(HWND)lpParam;
for(;;)
{//处理过程
::PostMessage(hWnd,UWM_SET_POS,range,pos);
}
return 0;
}显示对话框最好Create出来(非模态对话框),而不要DoModal;
该对话框中处理消息UWM_SET_POS;
在主线程里显示进度对话框,在工作线程里完成计算!如果主线程受到工作线程的结束信号了,直接关掉对话框就好了嘛!
至于对话框的显示,可以试试用Create创建再用ShowWindow()来控制它显不显示。
界面线程设置一个timer(比如间隔1s读这g_complete)换算为进度条百分比显示。工作线程里面写g_complete