UINT ThreadProc1(LPVOID pParam)
{
CWorkThreadDlg *pWnd = (CWorkThreadDlg*)pParam; // 获取窗口指针
while(pWnd->m_progint < 100) {
pWnd->m_progint++; // 工作
pWnd->SendMessage(WM_TIMER, 1, 0); // 报告工作(同步)
Sleep(50); // 延时
}
pWnd->PostMessage(WM_TIMER, 2, 0); // 报告处理完成(异步)
return 0;
}
void CWorkThreadDlg::OnBnClickedStart()
{
AfxBeginThread(ThreadProc1, this); // 第二个参数是自定义指针,这里传递窗口指针
}
void CWorkThreadDlg::OnBnClickedReset()
{
m_progint = 0;
m_progress.SetPos(m_progint);
}
void CWorkThreadDlg::OnTimer(UINT_PTR nIDEvent)
{
if (nIDEvent == 1) { // 接到报告工作
m_progress.SetPos(m_progint);
}
else if (nIDEvent == 2) { // 接到报告完成
AfxMessageBox("工作完成!");
}
}
[修改于 9年10个月前 - 2015/06/11 06:25:26]