void CTraffic_lightDlg::OnOK()
{
UpdateData(TRUE); //读取数码管内容
m_hy=m_hz=m_zs=m_zx=m_zt;
if (m_hl>=m_zt || m_zl>=m_zt)
{
AfxMessageBox("由于输入的时间错误,程序将终止");
CDialog::OnCancel();
//CTraffic_lightDlg::OnInitDialog();
}
UpdateData(FALSE); //显示数码管内容
n_zt=m_zt;
LedShow(0);//横红纵绿
//SetTimer(1,1,NULL);
MapShow0();
while(WAIT_OBJECT_0==WaitForSingleObject(hEvent,1000))
{
char t[256];
CString s;
n_zt-=1;
n_s=n_zt/10;
n_g=n_zt%10;
LightTen(n_s);
LightBit(n_g);
//Sleep(1000);
if(n_zt==-1)
{
if(l_b==0)
{
l_b=2;
LedShow(1);//横绿纵红
MapShow1();//SetTimer(2,1,NULL);//MapShow2();
}
else
{
l_b=0;
LedShow(0);//横红纵绿
MapShow0();//SetTimer(1,1,NULL);//MapShow0();
}
n_zt=m_zt;
}
if(n_zt==m_zl)
{
if (l_b==0)
{
MapShow3();//SetTimer(4,1,NULL);//MapShow3();
LedShow(3);//横红纵黄
}
}
if ( n_zt==m_hl)
{
if (l_b==2)
{
MapShow2();//SetTimer(3,1,NULL);//MapShow1();
LedShow(2);//横黄纵红
}
}
sprintf(t,"%d",n_zt);
s=t;
GetDlgItem(IDC_EDIT1)->SetWindowText(s);
GetDlgItem(IDC_EDIT2)->SetWindowText(s);
GetDlgItem(IDC_EDIT3)->SetWindowText(s);
GetDlgItem(IDC_EDIT4)->SetWindowText(s);
}
}
我已在OnInitDialog中定义了hEvent,并关连了事件。
我这个是用中断定时,问题就出现在while的WaitForSingleObject()里,如果使用软件定时,while里的代码全都能实现的。
但用WaitForSingleObject整个界面就陷入死机装态,不能动。
有没什么方法可以解决?