主窗体的类名为:
CModifyFileDlg
;进度条窗体的类名为:
CDlgProgress
;进度条实例作为的
CDlgProgress
成员的变量名为:
m_ProgressCtrl (
类型为
CProgressCtrl)
。
第一步:主窗体的按钮事件响应。
在主窗体的按钮事件响应中声明进度条窗口对象,调用其成员函数,把参数传给
CDlgProgress
的当前实例。
void CModifyFileDlg::OnBTNModifyFile()
{
UpdateData();
CDlgProgress ProgDlg; //
创建进度条窗口实例
//
用于传递参数、创建线程和显示模态窗口的函数
ProgDlg.DoModifyProgress(m_strFileName, m_strExpFileName); //
传入两个文件路径
}
第二步:进度条窗口的成员函数
这个函数在主窗口的按钮事件相应中被调用。
其作用是:
1
、接受参数,作为进程的参数传递给进程;
2
、创建进程,挂起的;
3
、显示模态的进程条对话框;
4
、等待线程结束;
5
、获取线程结束码。
DWORD CDlgProgress::DoModifyProgress(LPCSTR lpszSecFilePathName,
LPCSTR lpszDestFilePathName)
{
// 1.
给线程变量赋值
PARAM_ModifyFile ThreadParam; //
传递个线程的变量的结构体
ThreadParam.m_strSecFilePathName = lpszSecFilePathName;
ThreadParam.m_strDestFilePathName = lpszDestFilePathName;
ThreadParam.pWnd = this;
// 2.
创建一个被挂起的线程
m_hThread = CreateThread(NULL, 0, THREAD_File,
(LPVOID)&ThreadParam,
CREATE_SUSPENDED , NULL);