1. 程式人生 > >VC中判斷定時器是否已經開啟的辦法

VC中判斷定時器是否已經開啟的辦法

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的定時器已經建立了。