定时器Timer
??定時器Timer
? 創(chuàng)建定時器
? 銷毀定時器
? 代碼測試
?
?
一、? 創(chuàng)建定時器
?
UINT SetTimer(
?
HWND hWnd,?????????? ??// 指定關(guān)聯(lián)定時器的窗口句柄,在MFC版將省略此參數(shù)
??
UINT nIDEvent,??????? ???// 定時器ID ?
UINT uElapse,???????? ????// 時間間隔? 單位毫秒
??
TIMERPROC lpTimerFunc?? //定時器回調(diào)函數(shù)地址
);
定時器回調(diào)函數(shù)格式
VOID CALLBACK TimerProc(
?
HWND hwnd,??? ?// handle of window for timer messages
???
UINT uMsg,??? ???// WM_TIMER message
??
UINT idEvent, ????// timer identifier
??
DWORD dwTime?? // current system time
);
?
二、? 銷毀定時器
BOOL KillTimer(
?
HWND hWnd,??? // handle of window that installed timer
???在MFC版將省略此參數(shù)
UINT uIDEvent?? // timer identifier
);
三、? 代碼測試
?//實時顯示 當(dāng)前時間? 參考C語言053課
time_t t;
time(&t);
tm *TimeInfo=localtime(&t);
m_sTime.Format(L"%02d:%02d:%02d",TimeInfo->tm_hour,TimeInfo->tm_min,TimeInfo->tm_sec);
?
?
?
?
//代碼
// CDialog_Timer 消息處理程序
void CALLBACK EXPORT TimerProc(
???????? ???????? ???????? ???????? ???????? ???????? ???????? ?? HWND hWnd,????? // handle of CWnd that called SetTimer
???????? ???????? ???????? ???????? ???????? ???????? ???????? ?? UINT nMsg,????? // WM_TIMER
???????? ???????? ???????? ???????? ???????? ???????? ???????? ?? UINT nIDEvent,?? // timer identification
???????? ???????? ???????? ???????? ???????? ???????? ???????? ?? DWORD dwTime??? // system time
???????? ???????? ???????? ???????? ???????? ???????? ???????? ?? )
{
?
???????? if (nIDEvent==myTimerID) //
???????? {
???????? ???????? //執(zhí)行代碼
???????? ???????? TRACE("my TimerProc %d\n",dwTime);
???????? ???????? //顯示當(dāng)前時間
???????? ???????? time_t t;
???????? ???????? time(&t);
???????? ???????? tm *timeinfo=localtime(&t);
???????? ???????? TRACE("%02d:%02d:%02d",timeinfo->tm_hour,timeinfo->tm_min,timeinfo->tm_sec);
???????? ?
???????? }
}
?
?
void CDialog_Timer::OnBnClickedButton1()
{
???????? // TODO: 在此添加控件通知處理程序代碼
???????? //SetTimer(1001,1000,NULL);//WM_TIMER
???????? SetTimer(1001,1000,TimerProc);//不產(chǎn)生WM_TIMER
}
?
LRESULT CDialog_Timer::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
???????? // TODO: 在此添加專用代碼和/或調(diào)用基類
? //if (message==WM_TIMER)
? //{
???????? ?// if (wParam==myTimerID) //
???????? ?// {
???????? ???????? //? //執(zhí)行代碼
???????? ???????? //? TRACE("1111111111\n");
???????? ???????? //? //顯示當(dāng)前時間
???????? ???????? //? time_t t;
???????? ???????? //? time(&t);
???????? ???????? //? tm *timeinfo=localtime(&t);
???????? ???????? //? m_sTime.Format(L"%02d:%02d:%02d",timeinfo->tm_hour,timeinfo->tm_min,timeinfo->tm_sec);
???????? ???????? //? UpdateData(false);
???????? ?// }
?
? //}
???????? return CDialog::WindowProc(message, wParam, lParam);
}
?
void CDialog_Timer::OnBnClickedButton2()
{
???????? // TODO: 在此添加控件通知處理程序代碼
???????? KillTimer(myTimerID);//銷毀定時器
}
?
void CDialog_Timer::OnTimer(UINT_PTR nIDEvent)
{
???????? // TODO: 在此添加消息處理程序代碼和/或調(diào)用默認值
???????? if (nIDEvent==myTimerID) //
???????? ???????? ?{
???????? ???????? ? //執(zhí)行代碼
???????? ???????? ? TRACE("1111111111\n");
???????? ???????? ? //顯示當(dāng)前時間
???????? ???????? ? time_t t;
???????? ???????? ? time(&t);
???????? ???????? ? tm *timeinfo=localtime(&t);
???????? ???????? ? m_sTime.Format(L"%02d:%02d:%02d",timeinfo->tm_hour,timeinfo->tm_min,timeinfo->tm_sec);
???????? ???????? ? UpdateData(false);
???????? ???????? ?}
???????? CDialog::OnTimer(nIDEvent);
}
轉(zhuǎn)載于:https://www.cnblogs.com/15157737693zsp/p/3842090.html
總結(jié)
- 上一篇: 多线程,多进程选择(了解)
- 下一篇: GIS相关知识整理