執行個體——擷取線程退出碼1.添加兩個CWinThread子類CMyThread1,CMyThread2;右擊添加類-->選擇MFC類-->類名:CMyThread1,CMyThread2;基類:CWinThread-->完成
// MyThread1.cpp : 實現檔案BOOL CMyThread1::InitInstance(){// TODO: 在此執行任意逐線程初始化AfxEndThread(1000);//線程1的退出碼return TRUE;}
// MyThread2.cpp : 實現檔案BOOL MyThread2::InitInstance(){// TODO: 在此執行任意逐線程初始化AfxEndThread(2000);//線程2的退出碼return TRUE;}
2.
CGetExitCodeThreadDlg::CGetExitCodeThreadDlg(CWnd* pParent /*=NULL*/): CDialogEx(CGetExitCodeThreadDlg::IDD, pParent){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);//成員變數// CWinThread* pThread1;// CWinThread* pThread2;pThread1=NULL;pThread2=NULL;}CGetExitCodeThreadDlg::~CGetExitCodeThreadDlg(){if (pThread1){delete pThread1;pThread1=NULL;}if (pThread2){delete pThread2;pThread2=NULL;}}//啟動線程1按鈕事件void CGetExitCodeThreadDlg::OnBnClickedButtonStart1(){ if (pThread1){delete pThread1;pThread1=NULL;}pThread1=AfxBeginThread(RUNTIME_CLASS(CMyThread1),THREAD_PRIORITY_ABOVE_NORMAL,0,CREATE_SUSPENDED);pThread1->m_bAutoDelete=FALSE;pThread1->ResumeThread();}//啟動線程2按鈕事件void CGetExitCodeThreadDlg::OnBnClickedButtonStart2(){ if (pThread2){delete pThread2;pThread2=NULL;}pThread2=AfxBeginThread(RUNTIME_CLASS(CMyThread2),THREAD_PRIORITY_ABOVE_NORMAL,0,CREATE_SUSPENDED);pThread2->m_bAutoDelete=FALSE;pThread2->ResumeThread();}//擷取線程1結束碼按鈕事件void CGetExitCodeThreadDlg::OnBnClickedButtonExitcode1(){ if (pThread1 == NULL){return;}DWORD exitCode=0;if (::GetExitCodeThread(pThread1->m_hThread,&exitCode)){if (exitCode == STILL_ACTIVE){AfxMessageBox(_T("線程1已經啟動"));}else{CString strCode;strCode.Format(_T("退出碼:%d"),exitCode);AfxMessageBox(strCode);}}}//擷取線程2結束碼按鈕事件void CGetExitCodeThreadDlg::OnBnClickedButtonExitcode2(){ if (pThread2 == NULL){return;}DWORD exitCode=0;if (::GetExitCodeThread(pThread2->m_hThread,&exitCode)){if (exitCode == STILL_ACTIVE){AfxMessageBox(_T("線程1已經啟動"));}else{CString strCode;strCode.Format(_T("退出碼:%d"),exitCode);AfxMessageBox(strCode);}}}
3.結果圖