VC++中的Progress控件如何使用(二)

2014-11-23 20:10:54 · 作者: · 浏览: 65
E_MAP() // CProgressDialog message handlersBOOL CProgressDialog::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here m_ProgressCtrl.SetRange(0, 100); m_ProgressCtrl.SetPos(0); SetWindowText(m_Caption); if (!m_EnableCancel) { m_CancelButton.ShowWindow(SW_HIDE); } DWORD threadID; m_Thread=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)CProgressDialog::Thread Proc,(LPVOID)this,0,&threadID); return TRUE; // return TRUE unless you set the focus to a control   // EXCEPTION: OCX Property Pages should return FALSE } DWORD WINAPI CProgressDialog::ThreadProc(CProgressDialog* dlg) {DWORD ret=dlg->ProgressProc(); dlg->PostMessage(WM_COMMAND, IDOK); return ret; } void CProgressDialog::OnCancel() { // TODO: Add extra cleanup here if (m_EnableCancel) m_IsCancel=TRUE; } void CProgressDialog::OnOK() { // TODO: Add extra validation here WaitForSingleObject(m_Thread, INFINITE); CDialog::OnOK(); }DWORD CMyProgressDialog::ProgressProc() {SetMessage("Progress..."); for (int i=0;i<100;i++) {  if (IsCancel()) break; Sleep(100); SetProgress(i); } return 0; }
只需在应用Progress控件的地方调用CMyProgressDialog类的对象即可。可根据不同的应用程序修改DWORD CMyProgressDialog::ProgressProc()这个继承函数的函数体来适应相应的程序。