void CALLBACK MyTimerProc(HWND hwnd,UINT messagebox,UINT iTimerID,DWORD dwTime)
{
SYSTEMTIME stLocal; //系统时间
GetLocalTime(&stLocal);
TCHAR strTime[256];
wsprintf(strTime,"%i年%i月%i日 %i:%i:%i",stLocal.wYear,stLocal.wMonth,stLocal.wDay,
stLocal.wHour,stLocal.wMinute,stLocal.wSecond);
SetDlgItemText(hwnd,IDC_EDITTIME,strTime);
}
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
SetTimer(hwnd,0,1000,MyTimerProc); //1000ms,即每秒动态显示时间,其中MyTimerProc为具体要做的事
return TRUE;
}
//Windows 中时间用SYSTEMTIME 结构体表示时间,怎么将ulTime 转换为SYSTEMTIME:
#define HIGHTIME
21968699 // 21968708 // Jan 1, 1900 FILETIME.highTime
#define LOWTIME
4259332096 // 1604626432 // Jan 1, 1900 FILETIME.lowtime
unsigned long ulTime;
recv(sock,(char *)&ulTime,sizeof(unsigned long),0);
ulTime = ntohl(ulTime); //网络字节序到主机字节序
SYSTEMTIME st;
UINT64 uiCurTime, uiBaseTime, uiResult;
uiBaseTime = ((UINT64) HIGHTIME << 32) + LOWTIME;
uiCurTime = (UINT64)ulTime * (UINT64)10000000;
uiResult = uiBaseTime + uiCurTime;
FileTimeToSystemTime((LPFILETIME)&uiResult, &st);
//设置系统时间
SetSystemTime(&st);