如何用WIn32 API同步系统时间

bill_chuang 2010-10-08 11:12:51
我想设计一个计时器,使它能够与系统时间同步,Charles Petzold那本书上介绍计时器那章时使用定时器来实现,最后提到了用WM_TIMECHANGE会更好,但是我的程序根本就捕获不到WM_TIMECHANGE消息,我的本来理解是系统时钟每过一秒应该会发送一个WM_TIMECHANGE消息的,网上说是要系统时间设置改变时才会发送该消息,我不太明白,我的代码如下:

case WM_TIMECHANGE:
{
SYSTEMTIME stime;
GetLocalTime(&stime);
wsprintf(szBuffer,"%4d年%2d月%2d日\n%2d:%2d:%2d,星期%3d",
stime.wYear,stime.wMonth,stime.wDay,
stime.wHour,stime.wMinute,stime.wSecond,
stime.wDayOfWeek);
hdc = GetDC(hWnd);
TextOut(hdc,0,0,szBuffer,lstrlen(szBuffer));
ReleaseDC(hWnd,hdc);
SendMessage(hWnd,WM_PAINT,wParam,lParam);
}

所以请教高手指点如何解决该时间同步问题
...全文
239 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wltg2001 2010-10-09
  • 打赏
  • 举报
回复
就你的目的而言,你可以用定时器来处理,WM_TIMECHANGE消息当然也要处理,因为当系统时间变化时,你的程序不致于出现问题。
wltg2001 2010-10-09
  • 打赏
  • 举报
回复
我的本来理解是系统时钟每过一秒应该会发送一个WM_TIMECHANGE消息的,网上说是要系统时间设置改变时才会发送该消息,我不太明白,我的代码如下:
=================
理解出错,WM_TIMECHANGE是当修改系统时间时才会触发的,并不是每过一秒就会触发。如果系统时间不被修改,这个消息不会触发的。
visualwind 2010-10-09
  • 打赏
  • 举报
回复
"网上说是要系统时间设置改变时才会发送该消息" 就是说比如设置时间的时候会发送这个消息。可以在这个消息响应里面校正系统时间,使其不被错误修改。
zgl7903 2010-10-09
  • 打赏
  • 举报
回复
使用定时器即可,SetTimer定短一点 保证每秒钟有个5到10次刷新,人眼就感觉不出来快慢了
新编WIN32API大全 内容简介 作为Microsoft 32位平台的应用程序编程接口,Win32 API是从事Windows应用程序开发所必备的。本书首先对Win32 API函数做完整的概述;然后收录五大类函数:窗口管理、图形设备接口、系统服务、国际特性以及网络服务;在附录部分,讲解如何在Visual Basic和Delphi中对其调用。 本书是从事Windows应用程序开发的软件工程师的必备参考手册。 前言 Win32 API作为 Microsoft 32位平台(包括:Windows 9x,Windows NT3.1/4.0/5.0,WindowsCE)的应用程序编程接口,它是构筑所有32位Windows平台的基石,所有在Windows平台上运行的应用程序都可以调用这些函数。 从事Windows应用程序开发,离不开对Win32 API函数的调用。只有充分理解和利用API函数,才能深入到Windows的内部,充分挖掘系统提供的强大功能和灵活性。 近年来,随着Microsoft 32位平台的版本升级, Win32 API函数的构成、功能与调用方式都有很大的发展变化,然而,国内很少有相关的新版资料出版。为了满足广大开发人员的迫切需求,我们经过认真收集、整理素材,组织编写了这本与各种Microsoft 32位平台最新版本同步Win32 API参考手册。 全书收录了五大类函数:窗口管理、图形设备接口、系统服务、国际特性以及网络服务。所有函数均附有功能说明、参数说明、返回值说明、备注以及引用说明。另外,在本书的第一章,我们对WiN32 API函数作了完整的概述;在附录部分,讲解了如何在Visual Basic和Delphi中对其调用。 由于篇幅较大,涉及技术内容广泛,加之时间仓促,书中难免存在不少错误或疏漏,希望广大读者给与批评指正。

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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