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退出了
现这种死循坏一般是开线程的
呼啦一阵风
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())就可以判断了
添加回答
举报
0/150
提交
取消