我说的不是WM_TIMERCHANGE,也不是WM_TIMER消息,是这样的:
我想当系统时间正好在发生变化时(如分钟或秒钟)得到这样消息,来更改我的一个对象上显示的时间。
比如我显示的时间是精确到分钟的,那么我是没有必要随时随地都去查看时间有没有变化,如果我的时间精确到小时,那我只需要在系统时间正好在变更小时时给我一个消息。有这样的消息吗?
我想当系统时间正好在发生变化时(如分钟或秒钟)得到这样消息,来更改我的一个对象上显示的时间。
比如我显示的时间是精确到分钟的,那么我是没有必要随时随地都去查看时间有没有变化,如果我的时间精确到小时,那我只需要在系统时间正好在变更小时时给我一个消息。有这样的消息吗?
解决方案 »
- 使用BCG的问题
- MFC存在根路径受到改变,如何解决?
- 推荐.net书的请进来啊
- CrichEditView禁止OLe托拽?急...............
- 100分:如何用vc编写web用的activex控件呀,最好有源码?
- 请教各路高手,如何取到浏览器的ISessionObject接口的指针?
- 为什么在Debug版本updatedata(TRUE)处会出错?请教
- 如何设置使得通用文件对话框选择到目录就可以了!
- what's New for MFC Developers?
- 如何用IShield编写中文版的安装程序?
- 请教大虾如何在VC的image控件中适时显示图片(急)
- 关于UDP/IP协议打包的问题
要达到你的目的,用SetTimer()就可以了
也许你会劝我将SetTimer的时间间隔改小些,但是那样一样会有不精确,只是不精确的程度小些,还有,我不希望频繁的去检查时间。
突然想出了一个办法。这样吧!
每当开始运行程序的时候,读取当时的系统时间,设置一个状态变量用来判断是否现在是整点,如果不是,计算出目前到下一次整点需要的时间,然后设置一个SetTimer,它的时间间隔为达到下一次整点的时间;如果是整点的话,则设置SetTimer的时间间隔为1个小时即可。当不是整点的SetTimer计时达到下一次整点的时候,结束它(Kill),开始一个新的以一小时为单位的SetTimer。当然具体的逻辑还需要整理,尤其是状态变量的设置和判断,你还很需要花功夫,我就不替你做了。