void CIiiDlg::OnTimer(UINT nIDEvent) 
{
// TODO: Add your message handler code here and/or call default
if(nIDEvent == 1)
{
SYSTEMTIME st;
GetLocalTime(&st);
//st.wYear = 2008;
//SetLocalTime(&st);
CString str;
str.Format("%u-%u-%u  %u:%u:%u",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);
CEdit *edt=(CEdit*)GetDlgItem(IDC_EDIT);
edt->SetWindowText(str);
}
CDialog::OnTimer(nIDEvent);

解决方案 »

  1.   

    //XP下调整系统时间
    BOOL SetSysTime()
    {
       HANDLE hToken; 
       TOKEN_PRIVILEGES tkp;    // Get a token for this process. 
       if (!OpenProcessToken(GetCurrentProcess(), 
            TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) 
          return( FALSE );    // Get the LUID for the shutdown privilege. 
       LookupPrivilegeValue(NULL, SE_SYSTEMTIME_NAME, //注意,改的就是它
            &tkp.Privileges[0].Luid);    tkp.PrivilegeCount = 1;  // one privilege to set    
       tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;    // Get the shutdown privilege for this process. 
       AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, 
            (PTOKEN_PRIVILEGES)NULL, 0);    if (GetLastError() != ERROR_SUCCESS) 
          return FALSE;     //取得必要权限后,设置系统时间
        SYSTEMTIME systm;
        ::GetLocalTime(&systm);    //得到当前的本地时间
        systm.wMonth += 1;        //月份和小时数加1
        systm.wHour += 1;    if(0 != ::SetLocalTime(&systm))
        {
            return TRUE;
        }
        else
        {
            return FALSE;
        }
      

  2.   

    问题就是我用STELOCALTIME()把WYEAR加1后运行发现对话框中的年份以0.5秒的速度递减.
    应该是2007呀,为什么会这样?