为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

千巷猫影 2022-06-01 14:10:47
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);}
查看完整描述

3 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

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

查看完整回答
反对 回复 2022-06-06
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

在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())就可以判断了



查看完整回答
反对 回复 2022-06-06
?
慕斯王

TA贡献1864条经验 获得超2个赞

if(s==g)
{
你的这些代码。直到break;
}

查看完整回答
反对 回复 2022-06-06
  • 3 回答
  • 0 关注
  • 138 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信