第9 章 多线程
·227·
pBtn->SetWindowText("暂停");
}
// 改变按钮的状态
m_bPaused = !m_bPaused;
}
(12)响应“停止”按钮
响应“停止”按钮,用来停止线程,代码如下:
void CRacingDlg::OnStop()
{
// TODO: Add your control notification handler code here
// 存放线程的退出码
DWORD code;
if (!GetExitCodeThread(m_hRed, &code) ||
code == STILL_ACTIVE)
{
TerminateThread(m_hRed, code);
CloseHandle(m_hRed);
}
if (!GetExitCodeThread(m_hGreen, &code) ||
code == STILL_ACTIVE)
{
TerminateThread(m_hGreen, code);
CloseHandle(m_hGreen);
}
if (!GetExitCodeThread(m_hBlue, &code) ||
code == STILL_ACTIVE)
{
TerminateThread(m_hBlue, code);
CloseHandle(m_hBlue);
}
// 初始化对话框控件
InitDlgItem();
}
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·228·
(13)响应“关闭”按钮
响应“关闭”按钮,用来停止线程,并且释放资源,代码如下:
void CRacingDlg::OnCancel()
{
// TODO: Add extra cleanup here
OnStop();
// 释放Mutex 资源
CloseHandle(g_hRMutex);
CloseHandle(g_hGMutex);
CloseHandle(g_hBMutex);
CDialog::OnCancel();
}
(14)运行结果
运行程序,单击“开始”按钮,界面如图9-1 所示。
图9-1 程序开始运行的界面
调整各个马的速度,并且单击“暂停”按钮,界面如图9-2 所示,这时“暂停”按钮变
成“继续”按钮。
枫叶文学网www.fywxw.com
第9 章 多线程
·229·
图9-2 暂停后的程序界面
单击“停止”按钮,则重新开始比赛。单击“关闭”按钮,退出程序。
9