不想用ontimer函数,有其他方法每秒更新显示一次时间吗?

cs1438250 2015-08-27 07:15:56
常用settimer(1,1000,NULL);
在ontimer函数里每秒执行一次。
不想用setting和ontimer
有没有其他方式,每秒在界面上更新一次时间显示。
想到开一个线程,无限循环while(1)
循环get系统时间并显示,但是感觉这样做太浪费资源了。
...全文
193 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 2015-08-28
  • 打赏
  • 举报
回复
while(xxx) { //更新 ......... Sleep(1000); }
Magic丶旭 2015-08-28
  • 打赏
  • 举报
回复
其实定时器也是开启了线程来处理的,另外在线程中你可以用Sleep函数来让线程睡眠
brk1985 2015-08-28
  • 打赏
  • 举报
回复
以下方法可以不用定时器,我这个用在线程里,每


CEvent waitEvent;
CTime sCurTime;
while(1){
	WaitForSingleObject(waitEvent, 1000);  //空等待1s,不怎么消耗CPU资源
	sCurTime = CTime::GetCurrentTime();//获得当前时间
	//CString strTime =  sCurTime.Format("%Y/%m/%d %H:%M:%S");
	CString strTime =  sCurTime.Format("%H:%M:%S");//格式为:09:30:20
	......//输出时间
}
信阳毛尖 2015-08-28
  • 打赏
  • 举报
回复
引用 3 楼 cs1438250 的回复:
[quote=引用 1 楼 wxhxj0268 的回复:] 使用Ontime是利用系统的事件响应函数,相对你的什么“无限循环”会节约大量的系统资源,舍此不用还谈什么资源浪费?
除了无限循环和ontimer还有其他办法吗[/quote] 当然有啦,既然你知道Timer是利用系统事件机制,就可以去模拟它嘛,联想一下线程同步: HANDLE hEvent = CreateEvent(NULL,TRUE,FALSE,NULL); 然后开一个线程,也是通过while循环的方式去WaitForSingleObject(hEvent ,1000),剩下的逻辑自己去控制吧
木黑神 2015-08-28
  • 打赏
  • 举报
回复
while(GetMessage(&msg, NULL, 0, 0)) { 这里不收费,免费的。 }
xiaohuh421 2015-08-28
  • 打赏
  • 举报
回复
有很多方式实现定时器 除了WM_TIMER消息(你用的OnTimer方式) 还有TIMER回调方式 APC定时 线程定时 微软推荐的计时器函数CreateTimerQueueTimer 等等
cs1438250 2015-08-27
  • 打赏
  • 举报
回复
引用 1 楼 wxhxj0268 的回复:
使用Ontime是利用系统的事件响应函数,相对你的什么“无限循环”会节约大量的系统资源,舍此不用还谈什么资源浪费?
除了无限循环和ontimer还有其他办法吗
zhusg 2015-08-27
  • 打赏
  • 举报
回复
估计没有其他办法了,都浪费资源
笨笨仔 2015-08-27
  • 打赏
  • 举报
回复
使用Ontime是利用系统的事件响应函数,相对你的什么“无限循环”会节约大量的系统资源,舍此不用还谈什么资源浪费?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧