1. 程式人生 > >VC++獲取系統時間,並用字串顯示

VC++獲取系統時間,並用字串顯示

方法一 定時器方法

voidCDTTestDlg::OnTimer(UINT_PTR nIDEvent)

{

    // TODO: 在此新增訊息處理程式程式碼和/或呼叫預設值

    GetLocalTime( &sys );

    switch (nIDEvent)

    {

    case 1:

        strDate.Format("%4d-%2d-%2d",sys.wYear,sys.wMonth,sys.wDay);

        strTime.Format("%2d:%2d:%2d",sys.wHour,sys.wMinute,sys.wSecond);

        strDateAndTime=strDate;

        strDateAndTime+="    ";

        strDateAndTime+=strTime;

        m_strStatusTime=strDateAndTime;

        UpdateData(FALSE);    

        //KillTimer(1);//關閉Timer1

    case 2:

        break;

    default:

        break;

    }//swtich 結束

    CDialogEx::OnTimer(nIDEvent);

}

然後再初始化函式中增加語句:

        SetTimer(1,1000,NULL); //啟動定時器,右下角狀態列獲取日期時間資訊

程式設計心得:

1)  定時器可以設定多個,用case語句區分執行內容

2)  將系統日期結構體時間轉換為字串方法為

strTime.Format("%2d:%2d:%2d",sys.wHour,sys.wMinute,sys.wSecond);

方法二 執行緒方法

voidCDTTestDlg::OnTimer(UINT_PTR nIDEvent)

1)  定義執行緒控制代碼

    HANDLE startThread;

2)  宣告執行緒

在DTTestDlg.h開始部分宣告執行緒

UINTStartThread_GetDate(LPVOID pParam);   //該執行緒獲取系統日期、時間

3)  執行緒的實現程式碼,在.cpp檔案中

UINTStartThread_GetDate(LPVOID pParam)//獲取系統時間,日期的執行緒

{

    CDTTestDlg *obj=(CDTTestDlg *)pParam;

    SYSTEMTIME sys;

    BOOL m_bRun = TRUE; 

    while(m_bRun) 

    {

        GetLocalTime( &sys );

        obj->strDate.Format("%4d-%2d-%2d",sys.wYear,sys.wMonth,sys.wDay);

        obj->strTime.Format("%2d:%2d:%2d",sys.wHour,sys.wMinute,sys.wSecond);

        obj->strDateAndTime=obj->strDate;

        obj->strDateAndTime+="    ";

        obj->strDateAndTime+=obj->strTime;

        obj->m_strStatusTime=obj->strDateAndTime;  //

        ((CEdit*)obj->GetDlgItem(IDC_EDIT_TIME))->SetWindowTextA(obj->m_strStatusTime);

        _sleep(800);

    }

    return 0;

}

4)  啟動執行緒在初始化函式中

啟動日期時間執行緒

startThread=NULL;

startThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)StartThread_GetDate,this,0,NULL);

程式設計心得:

1)  執行緒實現一定要有return 0;

2)  執行緒需要迴圈才能實現持續的獲取時間