1.线程函数 必须是 静态类成员函数 或者 全局函数
CWinThread *pThread = AfxBeginThread(ConnectFunc,(LPVOID)this);
static UINT ConnectFunc(LPVOID lpParam);
2.线程函数返回值设为UINT ,如果不是 ,加一个类型转换的
static void ConnectFunc(LPVOID lpParam);
CWinThread *pThread = AfxBeginThread( (AFX_THREADPROC)ConnectFunc,(LPVOID)this);
利用线程更新
创建一个新的线程来更新界面,创建线程:
static UINT _cdecl ThreadFunc(LPVOID pParam);//线程函数声明
void CEditTestDlg::OnBnClickedBtnThreadUpdate() { CWinThread* pThread; pThread = AfxBeginThread(ThreadFunc,(LPVOID)this); }
线程内部实现:
static UINT _cdecl ThreadFunc(LPVOID lpParam) { CEditTestDlg *dlg = (CEditTestDlg*) lpParam; int i = 0; while (i < 200) { Sleep(20); i += 1; dlg->m_value2.Format(_T("%d"), i); //dlg->UpdateData(FALSE);//release下可行 dlg->m_editCtl.SetWindowText(dlg->m_value2);//使用control变量 //dlg->GetDlgItem(IDC_EDIT2)->SetWindowText(dlg->m_value2); } return 0; }