我正在Visual Studio 2008中開發基於MFC對話框的應用程序。我想使用在應用程序啓動時啓動的計時器,並繼續運行並調用執行我的任務的函數?我怎樣才能做到這一點?如何在基於MFC對話框的應用程序中使用Timer?
由於
我正在Visual Studio 2008中開發基於MFC對話框的應用程序。我想使用在應用程序啓動時啓動的計時器,並繼續運行並調用執行我的任務的函數?我怎樣才能做到這一點?如何在基於MFC對話框的應用程序中使用Timer?
由於
只需使用SetTimer
方法,以及傳遞兩個參數:定時器ID(任何數量),並以毫秒爲單位的超時時間。然後寫下OnTimer
的實現,並在BEGIN_MESSAGE_MAP...END_MESSAGE_MAP
的內部輸入ON_WM_TIMER
。
CWnd::SetTimer需要3個參數,但只需要2個參數。將第三個參數傳遞爲NULL。
如果你想使用定時器的基本思想,請看看這個鏈接,並經過與定時器工作的一步一步的過程。在此之後,您應該可以隨時在應用程序中輕鬆使用定時器。
鏈接:http://www.functionx.com/visualc/controls/timer.htm
希望這有助於。
乾杯。
_AFXWIN_INLINE UINT_PTR CWnd::SetTimer(UINT_PTR nIDEvent, UINT nElapse,
void (CALLBACK* lpfnTimer)(HWND, UINT, UINT_PTR, DWORD))
你可能想這樣做
UINT_PTR myTimer = SetTimer (1, 1000, null); // one event every 1000 ms = 1 s
,並在窗口的事件處理程序作出反應,ON_TIMER事件:
void CMyView::OnTimer (UINT_PTR nIdEvent)
{
if (nIdEvent == 1)
// handle timer event
}
另外,您可以將指針傳遞給函數處理計時器事件。保持定時器的句柄允許您在必要時使用KillTimer()關閉它。
http://msdn.microsoft.com/en-us/library/49313fdf(v=vs.80).aspx – YeenFei
我收到此錯誤:錯誤C3867:'CHDVRLauncherDlg :: TimerFunction':函數調用缺少參數列表;使用'&CHDVRLauncherDlg :: TimerFunction'來創建一個指向成員的指針。如果我將回調函數聲明爲static,那麼我無法從此回調調用其他函數。我是MFC新手。謝謝 –
你應該考慮的其他方法是:每隔一段時間獲取一次當前時間,並檢查是否有足夠的時間過去,或者開始一個新的線程(或進程),它將調用'sleep(long millisecs);',然後調用無論你想要什麼功能。 –