VS2012
CWinThread* g_pThreadA = NULL; BOOL g_bRunningA = FALSE; /* 创建线程 */ UINT DemoA(LPVOID PpARAM) { for (int i = 0; i < 100; i++) { if (!g_bRunningA) { break; } ::SetDlgItemInt(AfxGetApp()->m_pMainWnd->m_hWnd,IDC_STATIC_OUTPUT,i,false); Sleep(1000); } g_pThreadA = NULL; return 0; } /* 启动线程 */ void CDemoDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 //创建线程 if (g_pThreadA == NULL) { g_pThreadA = AfxBeginThread(DemoA, NULL);//传参数不用为NULL g_bRunningA = TRUE; } else { AfxMessageBox("线程已经启动"); } } /* 暂停线程 */ void CDemoDlg::OnBnClickedButton2() { // TODO: 在此添加控件通知处理程序代码 if (g_pThreadA == NULL) { AfxMessageBox("线程不存在"); } else { g_pThreadA->SuspendThread(); } } /* 继续线程 */ void CDemoDlg::OnBnClickedButton3() { // TODO: 在此添加控件通知处理程序代码 if (g_pThreadA == NULL) { AfxMessageBox("线程不存在"); } else { g_pThreadA->ResumeThread(); } } /* 终止线程 */ void CDemoDlg::OnBnClickedButton4() { // TODO: 在此添加控件通知处理程序代码 if (g_pThreadA == NULL) { AfxMessageBox("线程不存在"); } else { g_bRunningA = FALSE; } }
Caesar卢尚宇
2021年1月6日