1. 程式人生 > >[MFC]自定義時間間隔Timer

[MFC]自定義時間間隔Timer

需求: 對某項的處理,需要每隔一段時間處理一次。其它時間不處理。

例如: ffmpeg視訊播放的時候,25 TPS時,40ms播放一楨。

實現: 通過該類,可以設定一個定時器,不停查詢時,每n毫秒,返回一次true,用於間隔執行。

例如: ffmpeg視訊播放的時候,可以設定這個Timer,每40ms播放一楨。

每毫秒檢測一次,從而比較精確的播放每一幀。

當然了,也可使用MFC定時器來主動觸發,效果類似,但也有些不同,適用於不同的需求場景。

MFC定時器通常用於固定觸發,把觸發的動作時間排除在外,例如: sleep(n)->執行時間->sleep(n)

而這個CMyTimer的話,把觸發動作執行時間排除在外,例如sleep(n)->sleep(n) 和 執行時間無關。

class CMyTimer

{

public:

     // nTimeStep: 執行間隔

     // bIsFirstTimeProc: 第一次是否立刻執行

     CMyTimer(DWORD nTimeStep = 1000, bool bIsFirstTimeProc = true)

     {

         m_timestep = nTimeStep;

         if (!bIsFirstTimeProc)

         {

              m_starttime = timeGetTime();

         }

         else

         {

              m_starttime = 0;

         }

     }

     bool IsTimeToExecute()

     {

         DWORD curTime = timeGetTime();

         if (curTime >= m_starttime + m_timestep)

         {

              m_starttime = curTime;

              return true;

         }

         return false;

     }

private:

     DWORD m_starttime;

     DWORD m_timestep;

};

相關推薦

[MFC]定義時間間隔Timer

需求: 對某項的處理,需要每隔一段時間處理一次。其它時間不處理。 例如: ffmpeg視訊播放的時候,25 TPS時,40ms播放一楨。 實現: 通過該類,可以設定一個定時器,不停查詢時,每n毫秒,返回一次true,用於間隔執行。 例如: ffmpeg視訊播放的時候,

linux 獲取時間後--定義時間格式

1-1 ftime ble 時間格式 功能 時區 放置 日期和時間 保存 自定義時間格式我們可以使用strftime()函數將時間格式化為我們想要的格式。它的原型如下:size_t strftime(  char *strDest,  s

Django中的日期處理註意事項和定義時間格式轉換

python django datetime 我們在用Django創建models時,常常會涉及時間日期字段的處理,Django裏日期相關Field有DateTimeField、DateField和TimeField三種類型,看似簡單,但其中有一些容易出錯的地方需要註意;另外,如果不習慣Djang

【轉】MFC 定義edit 限制輸入十六進制內容 響應復制粘貼全選剪切的功能

edi 限制 flag asc 處理程序 tle ^h alt sci Ctrl組合鍵ASCII碼 ^Z代表Ctrl+z ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值

C++ 定義時間

重新定義 說明 pre break park mes 提升 有感 身體 ??今天精神狀態不好,和公司的領導請了假。為了抵抗我的痛苦,我在床上打坐冥想,從早上九點到下午三點二十六。嗯,感覺好多了。這種溫和的暴力果然有效。 ??之後吃了點東西,然後無聊的我就在想,明天的工作該做

Vue定義時間日期格式將毫秒數轉化為‘yyyy-MM-dd hh:mm:ss’

 新建 filter 資料夾,在filter新建index.js,建立全域性過濾器 //filter/index.js內容 import Vue from 'vue' Vue.filter('date', function (dateTime, fmt) { var d

jsp定義時間轉化tag標籤

1.新建Java型別DateTag import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Calendar; import javax.servlet.jsp.JspExcepti

定義時間選擇器(更改分割線和距離)

一、首先了解DatePicker原始碼的佈局        年、月、日 是由3個numberPicker組成  通過發射獲取到NumberPicker 如果不想顯示天數 ,重新佈局       lps.wid

微信小程式 Canvas 定義時間顯示器 數碼管顯示

微信小程式自定義時間顯示器Demo 廢話不多話,還是依舊上圖再說,哈哈 怎麼樣,效果還是不錯的吧,因專案要求,要畫出類似於數碼管顯示的時間樣式,沒辦法,雖然不咋過好弄,但工作畢竟得做,於是乎,樓主,花了3個小時在那裡硬生生的算座標,差不多還是給擼出來,樓主寫成了一個外掛,方便大

javascript定時器倒計時定義時間迴圈

html> head , body...此處省略。。 <div class="TitAlis clearfloat"> <h3>健康團 <span class="hotDp"><a class="fon

js定義時間日期格式和時間的轉換

1.日期格式根據自己需要重寫 Date.prototype.toLocaleString = function() { return this.getFullYear() + “年” + (this.getMonth() + 1) + “月” +this.getDate() + "日 "

Jenkins定時構建(二)--在指定時間段內每隔定義時間執行

(一、Jenkins 定時任務觸發時間表達式 ) Jenkins採用了著名的UNIX任務排程工具CRON所使用的配置方式。用5個欄位代表5個不同的時間單位(中間用空格隔開): 分 時 日 月 星期幾 0 2 * * *    表示每天凌晨2點

MFC 定義訊息

訊息對映、迴圈機制是Windows程式執行的基本方式。VC++ MFC 中有許多現成的訊息控制代碼,可當我們需要完成其它的任務,需要自定義訊息, 就遇到了一些困難。在MFC ClassWizard中不允許新增使用者自定義訊息,所以我們必須手動在程式中新增相應程式碼,以便可以象處理其它訊息一樣處理自

定義時間與系統時間的比較

   public class Time{               public static void main (String[]args){               Date d1= new Date();//例項化,獲取當前系統時間        

定義時間選擇器UIPickerView

使用方法:@property (nonatomic, assign) QLChangeTimeView *chooseTimeView;//時間選擇檢視_chooseTimeView = [[NSBundle mainBundle]loadNibNamed:@"QLChangeTim

MFC定義訊息

1. 定義全域性變數或巨集#define WM_MyMessage (WM_USER + n) n為數字到少大於100或者用 const UINT WM_MYMESSAGE = WM_USER + n一般可以加在stdafx.h 或resource.h 或*.app.h中。他們都是全域性變數標頭檔案所以都可以

vue.js下定義時間格式

一、使用自定義js的正則表示式 //頁面上呼叫過濾器(頁面上) {{date | formatDate}} //建立過濾器(new Vue()中) filters: {

定義時間選擇控制元件(仿ios滾動效果)

1.先上自定義的控制元件: /** * 滾輪選擇器 * author LH * data 2016/8/20 17:26 */ public class WheelView extends View { public static final String

Android定義時間選擇器或者WheelView

public class PickView extends View{ public static final String TAG = "PickerView"; /** * text之間間距和minTextSize之比 */ publ

MFC定義按鈕的實現

#include "stdafx.h" #include "PicBtn.h" #include "DrawingTools.h" #include "Resource.h" CPicButton::CPicButton(void) { m_crForeColor[COLOR_NORMAL] = RGB(