VC中判斷定時器是否已經開啟的辦法
阿新 • • 發佈:2018-12-30
VC中定時器的用法比較簡單,無非是三個函式:SetTimer,KillTimer和OnTimer。這裡主要說下如何判斷一個定時器已經被開啟(SetTimer):
1、使用一個全域性變數來標記
bool flag = false;
if(!flag)
{
SetTimer(1,1000,NULL);
flag = true;
}
if(flag) AfxMessagebox(_T("定時器1已經開啟"));
2、使用KillTimer的返回值來判斷:呼叫成功則返回非0值,不成功則返回0值。
//假設是定時器1 if(KillTimer(1)) AfxMessagebox(_T("定時器1之前存在,現已關閉")); else AfxMessagebox(_T("定時器1不存在"));
3、實際上直接重新SetTimer就能夠將原先的定時器覆蓋掉,參考MSDN:
If the hWnd parameter is not NULL and thewindow specified by hWnd already has a timer with the value nIDEvent,
then the existing timer is replaced by thenew timer. When SetTimer replaces atimer, the timer is reset.
Therefore, a message will be sent after thecurrent time-out value elapses, but the previously set time-out value isignored.
所以在呼叫SetTimer的時候原有的定時器會被新的取代,如果要建立新的定時器根本不用在意之前有沒有相同id的定時器已經建立了。