关于下面的算法,执行后程序无响应 ,试过if(s!=g) 运行结果没问题,求指点!

void myDlg::OnB() //点击后启动闹钟
{

int g; //闹钟时间
g=h*3600+m*60;
CString ss;
do{
int t=GetCurrentTime(); //获取系统时间
int s=t/1000;
if(s==g)

ss="闹钟时间到";
str=ss;
UpdateData(FALSE);
str="";
break;
}while(1);

}

千巷猫影
浏览 139回答 3
3回答

江户川乱折腾

他能运行,只不过卡死罢了,你的while是个死循环...至于你说什么if(s!=g)可以,那是恰好满足if(s!=g)的条件,进到if里面执行了break退出了现这种死循坏一般是开线程的

呼啦一阵风

在VC中,我们可以借助CTime时间类,获取系统当前日期,具体使用方法如下:CTime t = CTime::GetCurrentTime(); //获取系统日期int d=t.GetDay(); //获得几号int y=t.GetYear(); //获取年份int m=t.GetMonth(); //获取当前月份int h=t.GetHour(); //获取当前为几时int mm=t.GetMinute(); //获取分钟int s=t.GetSecond(); //获取秒int w=t.GetDayOfWeek(); //获取星期几,注意1为星期天,7为星期六所以g=h*3600+m*60; 通过 if(s==g)来判断是否相等是错误的。你写成 if(h==t.GetHour())&&mm==t.GetMinute())就可以判断了

慕斯王

if(s==g){你的这些代码。直到break;}
打开App,查看更多内容
随时随地看视频慕课网APP