void CsimilateDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
HANDLE h1=AfxBeginThread(ThreadFunc1,this,0,0,0,0);
hMutex = CreateMutex(NULL, FALSE, (LPWSTR)"screen");
HANDLE h2=AfxBeginThread(ThreadFunc2,this,0,0,0,0);
HANDLE h3=AfxBeginThread(ThreadFunc3,this,0,0,0,0);
while(1);
}
UINT ThreadFunc1(LPVOID lpParam)
{
while(1)
{
WaitForSingleObject(hMutex, INFINITE);
CsimilateDlg* dlg=(CsimilateDlg*)lpParam;
dlg->SetDlgItemTextW(IDC_EDIT1,_T("A"));
Sleep(1000);
ReleaseMutex(hMutex);
}
return 0;}
UINT ThreadFunc2(LPVOID lpParam)
{
while(1)
{
WaitForSingleObject(hMutex, INFINITE);
CsimilateDlg* mydlg=(CsimilateDlg*)lpParam;
mydlg->SetDlgItemText(IDC_EDIT2,_T("B"));
Sleep(1000);
ReleaseMutex(hMutex);
}
return 0;
}
UINT ThreadFunc3(LPVOID lpParam)
{
while(1)
{
CsimilateDlg* dlg=(CsimilateDlg*)lpParam;
dlg->SetDlgItemText(IDC_EDIT3,_T("C"));
}
return 0;}
键面如图所示,点击按钮线程1,2交替执行,线程3直接执行!谢谢!
hMutex = CreateMutex(NULL, FALSE, (LPWSTR)"screen");// 后加:
ReleaseMutex(hMutex);
GetDlgItem(ID)->SetWindowText("a");
死循环中呢。当然不能更新数据了。
void CsimilateDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
HANDLE h1=AfxBeginThread(ThreadFunc1,this,0,0,0,0);
hMutex = CreateMutex(NULL, FALSE, (LPWSTR)"screen");
HANDLE h2=AfxBeginThread(ThreadFunc2,this,0,0,0,0);
HANDLE h3=AfxBeginThread(ThreadFunc3,this,0,0,0,0);
while(1);
}