字体
第(2/6)页
关灯
   存书签 书架管理 返回目录
    第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
上一页 目录 下一页