哲学家就餐问题――MFC演示程序(七)

2014-11-24 12:17:24 · 作者: · 浏览: 2
for (int i=0;i<6;i++)
{
pthread[i]->SuspendThread();
}
m_continue=TRUE;
return;
}
else
{
GetDlgItem(IDC_BUTTON_STOP)->SetWindowText("暂停演示");
for (int i=0;i<6;i++)
{
pthread[i]->ResumeThread();
}
m_continue=FALSE;
return;
}


}
进程运行时图形变化的绘制已经在进程函数Eat中了,大家可以自己看下,不是很复杂。

三、两个按钮的代码

开始和停止按钮的代码,没什么内容,我把代码贴下,大家可以参考~

void CPhilosophy_EatingDlg::OnButtonStart()
{
// TODO: Add your control notification handler code here
for (int m=0;m<6;m++)
{
chopsticks[m]=1;
}


for(int i=0;i<6;i++)
{
switch(i)
{
case 0:
imageinfo[i].edit=GetDlgItem(IDC_EDIT_STATE1)->m_hWnd;
break;
case 1:
imageinfo[i].edit=GetDlgItem(IDC_EDIT_STATE2)->m_hWnd;
break;
case 2:
imageinfo[i].edit=GetDlgItem(IDC_EDIT_STATE3)->m_hWnd;
break;
case 3:
imageinfo[i].edit=GetDlgItem(IDC_EDIT_STATE4)->m_hWnd;
break;
case 4:
imageinfo[i].edit=GetDlgItem(IDC_EDIT_STATE5)->m_hWnd;
break;
case 5:
imageinfo[i].edit=GetDlgItem(IDC_EDIT_STATE6)->m_hWnd;
break;
default:
break;
}
imageinfo[i].pWnd=this;

imageinfo[i].index=i;
imageinfo[i].pt_chair=pt_chair[i];
imageinfo[i].pt_chopstick_middle[0]=pt_chopstick_start[i];
imageinfo[i].pt_chopstick_middle[1]=pt_chopstick_start[(i+5)%6];
imageinfo[i].radius_chair=radius_chair;
imageinfo[i].radius_table=radius_table;
imageinfo[i].pt_chopstick_end[0]=pt_chopstick_end[i];
imageinfo[i].pt_chopstick_end[1]=pt_chopstick_end[(i+5)%6];
pthread[i]=AfxBeginThread(Eat,&imageinfo[i]);
}



}

void CPhilosophy_EatingDlg::OnButtonStop()
{
// TODO: Add your control notification handler code here
if (FALSE==m_continue)
{
GetDlgItem(IDC_BUTTON_STOP)->SetWindowText("继续演示");
for (int i=0;i<6;i++)
{
pthread[i]->SuspendThread();
}
m_continue=TRUE;
return;
}
else
{
GetDlgItem(IDC_BUTTON_STOP)->SetWindowText("暂停演示");
for (int i=0;i<6;i++)
{
pthread[i]->ResumeThread();
}
m_continue=FALSE;
return;
}

}
主要的就是这么多了,大家结合着代码看看,有不明白的欢迎和我交流~~~

贴几个程序运行的图片

\


源代码下载:http://up.2cto.com/2012/0217/20120217094104830.rar

我把代码贴出来是希望能帮助一些人,如果有不明白的可以和我讨论,希望不要将本程序直接拷贝,谢了!