當前位置:編程學習大全網 - 編程語言 - 如何為節目計時

如何為節目計時

//下面的代碼暫停計時器,並在啟動之前延遲20秒。

kill time(1);//停止計時器1。

SetTimer(2,20000,NULL);//啟動2號定時器,20秒後觸發OnTimer功能。

//下面是OnTimer函數的實現。

void OnTimer(單位事件)

{

開關(nIDEvent){

案例1:

//完成定時器1的功能。

打破;

案例二:

消磨時間(2);//殺死定時器2

SetTimer(1,Step,NULL);//啟動計時器1

打破;

}

}

編程中經常用到定時器。使用timer的方法比較簡單,壹般是告訴Windows壹個時間間隔,然後WINDOWS在這個時間間隔周期性的觸發程序。通常有兩種方法可以實現:發送WM_TIMER消息和調用應用程序定義的回調函數。

1.1使用WM_TIMER設置定時器。

請先看看API函數SetTimer的原型。

UINT_PTR設置定時器(

HWND hWnd,//窗口句柄

UINT_PTR nIDEvent,//定時器ID,當有多個定時器時,可以通過這個ID判斷是哪個定時器。

UINT uElapse,//時間間隔,以毫秒為單位。

TIMERPROC lpTimerFunc //回調函數

);

例如

SetTimer(m_hWnd,1,1000,NULL);//每1秒觸發壹次的計時器。

在MFC程序中SetTimer封裝在CWnd類中,所以調用時不需要指定窗口句柄,例如:

UINT SetTimer(1,100,NULL);

函數echo值是第壹個參數值1,表示這個定時器的ID號。

第二個參數表示在重新處理之前等待100毫秒。在這個方法中,第三個參數通常為空。

註意:在設置第二個參數時,需要註意的是,如果等待時間短於處理時間,程序就會出現問題。

1.2調用回調函數

該方法首先以下列格式編寫壹個回調函數。

void回調TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime);

然後使用setter (1,100,timer proc)函數構建壹個定時器,第三個參數是回調函數的地址。

第二,多定時器的實現和應用

我們在安裝定時器時給它分配壹個ID,當我們使用多個定時器時,這個ID就開始起作用了。

不使用MFC時,收到WM_TIMER消息時,WPARAM wParam中的值是定時器的ID。

使用MFC的時候,就更簡單了。我們可以在WM_TIME的Timer上添加消息處理功能。請看下面的例子。

void CTimerTestDlg::on timer(UINT nIDEvent)

{

開關(nIDEvent)

{

案例24: ///處理ID為24的計時器。

draw 1();

打破;

案例25: ///處理ID為25的計時器。

draw 2();

打破;

}

CDialog::on timer(nIDEvent);

}

當妳使用回調函數時,我們可以根據nTimerid的值來判斷是哪個定時器,例如:

void回調TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime)

{

開關(nTimerid)

{

案例1: ///處理ID為1的計時器。

do 1();

打破;

案例2: ///處理ID為2的計時器。

do2();

打破;

}

}

第三,取消定時器

計時器不再使用後,我們應該調用KillTimer來取消計時。KillTimer的原型如下。

布爾殺手計時器(

HWND hWnd,//窗口句柄

UINT_PTR uIDEvent // ID

);

在MFC程序中,我們可以直接調用KillTimer(int nIDEvent)來取消定時器。

  • 上一篇:單眼失明可以學什麽專業
  • 下一篇:怎麽上清華
  • copyright 2024編程學習大全網